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()  # 退出浏览器

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

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

  • 相关阅读:
    hadoop再次集群搭建(3)-如何选择相应的hadoop版本
    48. Rotate Image
    352. Data Stream as Disjoint Interval
    163. Missing Ranges
    228. Summary Ranges
    147. Insertion Sort List
    324. Wiggle Sort II
    215. Kth Largest Element in an Array
    快速排序
    280. Wiggle Sort
  • 原文地址:https://www.cnblogs.com/Chaqian/p/12801616.html
Copyright © 2011-2022 走看看