多测师是一家拥有先进的教学理念,强大的师资团队,业内好评甚多的接口自动化测试培训机构!

17727591462

联系电话

您现在所在位置:接口自动化测试培训 > 新闻资讯

Selenium+Python自动化测试模型

更新时间:2023-01-31 09:24:16 作者:多测师 浏览:45

  1.模块化与类库

  我们 测试过程中,即使自动化测试,写的脚本,很多内容是重复性的;于是我们就可以考虑将其重复的部分,写成一个公共的模块,需要的时候进行调用,这样就大大提高了我们编写脚本的效率。

Selenium+Python自动化测试模型

  下面以百度云网站的登录,退出为例。

  分析:

  百度云网站的登录,那么需要登录部分的脚本,用于自动输入用户名,密码以及点击登录按钮。将此脚本命名为Login.py 退出该网页,只需要简单的quit()函数即可实现,将此脚本命名为Quit_OS.py

  首先,写login.py的内容如下:

  fromseleniumimportwebdriverfromselenium.webdirver.common.action_chainsimportActionChainsimporttimedeflogin():browser=webdriver.Chrome()

  browser.find_element_by_name("userName").clear()

  browser.find_element_by_name("userName").send_keys("alu***")

  browser.find_element_by_name("userName").send_keys(Keys.TAB)

  browser.find_element_by_name("password").send_keys("*****")

  browser.find_element_by_css_selector("input[value='登录']").click()

  其次,写Quit_OS.py 脚本

  fromseleniumimportwebdriverfromselenium.webdirver.common.action_chainsimportActionChainsimporttimedefquit_OS():browser=webdriver.Chrome()

  browser.quit()

  然后,整合Login.py与Quit_OS.py 集成一个完整的,可重复性使用的。

  #coding=utf-8from selenium import webdriver

  from selenium.webdirver.common.action_chains import ActionChains

  import time

  import Login,Quit_OS#调用Login,Quit_OS模块browser=webdriver.Chrome()

  url="http://yun.baidu.com/"browser.get(url)# 调用登录模块Login.login()#注意大小写,调用模块名字与函数名字的书写time.sleep(10)# 调用退出模块Quit_OS.quit_OS()

  这样做的优点是提高了开发效率,不用重复的编写相同的脚本;假如,我已经写好一个登录模块,我后续需要做的就是在需要的地方调用,不同重复写脚本。同时,方便了代码的维护,假如登录模块发生了变化,我只用修改 login.py 文件中登录模块的代码即可,那么所有调用登录模块的脚本不用做任何修改。

  2.数据驱动

  这点与QTP中的DataTable的功能类似。可以理解成参数化,输入数据的不同从而引起输出结果的变化。

  测试案例:以搜狗搜索为例,自动搜索5次不同的关键字。

  测试脚本:

  fromselenium import webdriverfromselenium.webdriver.common.action_chains import ActionChains

  importtimevalues=['Selenium','QTP','Loadrunner','Python','Ruby']forkeyinvalues:

  browser=webdriver.Chrome()

  url="https://www.sogou.com/"browser.get(url)

  browser.find_element_by_name("query").clear()

  browser.find_element_by_name("query").send_keys(key)

  browser.find_element_by_css_selector("input[value='搜狗搜索']").click()time.sleep(4)

  browser.quit()

  这样可以做到,不管我们读取的是数组,还是字典、函数,又或者是 csv、txt 文件。实现了数据与脚本的分离,实现了参数化。传100个数据,通过脚本的执行,可以返回100个结果出来。

  3.数据驱动(**.txt)参数化

  在上一段的数据驱动中介绍了如何通过 python 定的数组对sogou输入数据进行参数化设置,将其它循环的读取 vlalues 数组中每一个数据。这里我们将通过读取 txt 文件中的数据来实现参数化。

  测试案例:应用搜狗搜索,即通过读取tes.txt的数据,得到相应的搜索网页结果。

  测试脚本:

  source=open("test.txt","r")

  keys=source.readlines()

  source.close()

  for keyinkeys:

  browser=webdriver.Chrome()

  url="https://www.sogou.com/"browser.get(url)

  browser.find_element_by_name("query").clear()

  browser.find_element_by_name("query").send_keys(key)

  browser.find_element_by_css_selector("input[value='搜狗搜索']").click()

  time.sleep(4)

  browser.quit()

  4.数据驱动(**.csv)参数化

  如果我有自动化脚本中要参数化一张表单,表单需要填写用户名、网址,城市等信息,使用上面的方法就很难来解决这个问题,那么,可以通过读取 .csv 文件的方法来解决这个问题。

  **.csv文件是通过Excel或者WPS来创建,创建后,另存为CSV类型。

  测试脚本:

  #coding=utf-8importcsv#加载csv模块withopen('test.csv')asf:

  data = csv.reader(f)foruserindata:print(user[0])print(user[1])print(user[2])

  以上内容为大家介绍了Selenium+Python自动化测试模型,本文由多测师亲自撰写,希望对大家有所帮助。了解更多自动化测试相关知识:https://www.aichudan.com/xwzx/

联系电话

17727591462

返回顶部