zoukankan      html  css  js  c++  java
  • 腾讯大牛教你简单的自动化测试模型(Python+Selenium)

    今天讲解简单的自动化测试模型,对于刚接触自动化测试的同学,由于没有编程语言的基础,是搞不懂代码里面的函数、封装、包以及其他概念,只是了解字符串、数组、元组及字典这种最基本的名词,更不懂自动化测试框架了。

    这篇笔记来粗略记下学习自动化测试的几种模型。

    1、线性测试

      线性测试,顾名思义,就是一条路按照一条直线走到底。它的每个脚本都是独立的,都可以拿出来单独运行,来验证一个功能点,上两段小代码举个栗子:

    打开百度主页:

    # coding:utf-8

    from time import sleep  # 从time中引入sleep

    from selenium import webdriver  # 从selenium中引入webdriver

    driver = webdriver.Firefox()  # 选择打开的浏览器

    driver.maximize_window()   # 浏览器窗口最大化

    driver.implicitly_wait(3)  # 隐式等待

    driver.get("https://www.baidu.com")  # 获取URL,打开页面

    driver.quit()  # 退出相关浏览器

      打开百度主页,并输入查找内容:

    # coding:utf-8

    from time import sleep  # 从time中引入sleep

    from selenium import webdriver  # 从selenium中引入webdriver

    driver = webdriver.Firefox()  # 选择打开的浏览器

    driver.maximize_window()   # 浏览器窗口最大化

    driver.implicitly_wait(3)  # 隐式等待

    driver.get("https://www.baidu.com")  # 获取URL,打开页面

    search = driver.find_element_by_id("kw")  # 通过id定位搜索框

    search.send_keys("selenium")  # 填入"selenium"

    sleep(5)  # 直接等待

    driver.quit()  # 退出相关浏览器

      以上两段代码,分别做了实现打开百度首页和打开百度首页后输入查找内容的功能,都可以单独拿出来执行。如果需要修改查找访问页面,那么我需要两段代码都需要修改。当这类独立的脚本数量多了起来,去修改这些内容花费的工作量太大,将会失去了自动化的目的。

     2、模块化与类库

    login.py

    # coding:utf-8

    from time import sleep

    from selenium import webdriver  # 从selenium中引入webdriver

    def login_mantis():

    driver = webdriver.Firefox()  # 选择打开的浏览器

    driver.maximize_window()  # 浏览器窗口最大化

    driver.implicitly_wait(3)  # 隐式等待

    driver.get("http://192.168.1.201/mantisbt-1.2.19/login_page.php")  # 获取URL,打开页面

    sleep(1)  # 直接等待

    username = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[2]/td[2]/input")  # 通过Xpath定位获取输入账号框

    username.send_keys("wuhaobo")  # 输入账号

    sleep(1)

    password = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[3]/td[2]/input")  # 通过Xpath定位获取输入密码框

    password.send_keys("123456")  # 输入密码

    sleep(1)

    login = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[6]/td/input")  # 通过Xpath定位获取登录按钮

    login.click()  # 点击登录按钮

    sleep(3)

      上面的代码实现了mantis登录功能。

    quit.py

    # coding:utf-8

    from selenium import webdriver  # 从selenium中引入webdriver

    def quit_mantis():

    driver = webdriver.Firefox()  # 选择打开的浏览器

    driver.quit()  # 退出相关浏览器

      上面的代码实现了mantis退出功能。

    do_something_in_mantis.py

    # coding:utf-8

    from time import sleep  # 从time中引入sleep

    from selenium import webdriver  # 从selenium中引入webdriver

    import login  # 引入登录模块

    import quit  # 引入退出模块

    login.login_mantis()  # 调用登录模块

    print ">>>以下操作为在登录界面后的操作"

    # 需要做的操作放在登录和退出中间

    print ">>>以上操作为在登录界面后的操作"

    quit.quit_mantis()  # 调用退出模块

    上面的代码实现了调用登录模块和退出模块。

    如果对软件测试、接口测试、自动化测试、面试经验交流。感兴趣可以加软件测试交流:1085991341,还会有同行一起技术交流。

    通过以上代码可以发现,登录模块和退出模块可以让任意操作类脚本调用,省去了该部分代码的重复量,便于维护的同时,也加快了代码的开发速度。

    3、数据驱动

    直接理解成参数化输入,不同结果输出。

    (1)、读取TXT方式

    将存好登录的账号密码放置在两个TXT文件中:


     

    # coding:utf-8

    from time import sleep

    from selenium import webdriver  # 从selenium中引入webdriver

    username_file = open("G:\joker_study\username.txt")  # 打开账号文本路径

    username = username_file.read()  # 取出账号

    password_file = open("G:\joker_study\password.txt")  # 打开密码文本路径

    password = password_file.read()  # 取出密码def login_mantis_by_txt():

    driver = webdriver.Firefox()  # 选择打开的浏览器

    driver.maximize_window()  # 浏览器窗口最大化

    driver.implicitly_wait(3)  # 隐式等待

    driver.get("http://192.168.1.201/mantisbt-1.2.19/login_page.php")  # 获取URL,打开页面

    sleep(1)  # 直接等待

    username_input = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[2]/td[2]/input")  # 获取输入账号框

    username_input.send_keys(username)  # 输入账号

    sleep(1)

    password_input = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[3]/td[2]/input")  # 获取输入密码框

    password_input.send_keys(password)  # 输入密码

    sleep(1)

    login_button = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[6]/td/input")  # 获取登录按钮

    login_button.click()  # 点击登录按钮

    sleep(3)

    driver.quit()  # 退出浏览器

    上面的代码实现了从TXT文件中读出账号和密码,再传入函数中,进行登录操作。

    (2)、通过函数

    userconfig.py

    # coding:utf-8

    def username_password(username="CJOLER",password="123456"):

    return username,password

    login.py

    # coding:utf-8

    from time import sleep

    from selenium import webdriver  # 从selenium中引入webdriver

    import userconfig  # 引入userconfig文件

    un, pw = userconfig.username_password()

    print un, pw

    def login_mantis_by_txt():

    driver = webdriver.Firefox()  # 选择打开的浏览器

    driver.maximize_window()  # 浏览器窗口最大化

    driver.implicitly_wait(3)  # 隐式等待

    driver.get("http://192.168.1.201/mantisbt-1.2.19/login_page.php")  # 获取URL,打开页面

    sleep(1)  # 直接等待

    username_input = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[2]/td[2]/input")  # 获取输入账号框

    username_input.send_keys(un)  # 输入账号

    sleep(1)

    password_input = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[3]/td[2]/input")  # 获取输入密码框

    password_input.send_keys(pw)  # 输入密码

    sleep(1)

    login_button = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[6]/td/input")  # 获取登录按钮

    login_button.click()  # 点击登录按钮

    sleep(3)

    driver.quit()  # 退出浏览器

    上面的代码实现了将账号密码放在一个函数内,再去调用,进行登录操作。

    以上,希望对你有帮助,有被帮助到的朋友欢迎点赞,评论。

  • 相关阅读:
    smart code
    上传图片格式简单校验和回显
    【Spring框架】<mvc:default-servlet-handler/>的作用
    (转) SpringMVC学习笔记-
    MybatisX idea 快速开发插件
    mybatis-generator数据库注释实体类生成以及generatorConfig文件配置
    mysql类型为varchar double类型字符串求和多出多个小数
    <c:set> 标签
    MySQL Navicat Premium 保存sql语句
    springboot项目对接支付宝支付
  • 原文地址:https://www.cnblogs.com/Chaqian/p/12801616.html
Copyright © 2011-2022 走看看