云之高水之远 2020-03-26
按自动化测试的发展顺序,主要以下几种模型:
下面主要介绍模块化驱动测试和数据驱动测试:
1. 模块化驱动测试
将重复的操作独立成公共模块,如下:
a)传统的线性模型
from selenium import webdriver import time driver = webdriver.Chrome() driver.implicitly_wait(10) driver.get("http://www.baidu.com") # 百度首页输入框,搜索关键字 driver.find_element_by_id(‘kw‘).send_keys(‘fda‘) driver.find_element_by_id(‘su‘).click() time.sleep(2) # 退出并关闭浏览器 driver.quit()
b)将搜索和退出模块,封装成函数
from selenium import webdriver import time driver = webdriver.Chrome() driver.implicitly_wait(10) driver.get("http://www.baidu.com") # 定义函数 - 百度首页输入框,搜索关键字 def search_keyword(): driver.find_element_by_id(‘kw‘).send_keys(‘fda‘) driver.find_element_by_id(‘su‘).click() time.sleep(2) # 定义函数 - 退出并关闭浏览器 def quit(): driver.quit() # 函数调用 search_keyword() quit()
c)将公共模块放到单独的脚本文件中
test1.py 主文件1 from selenium import webdriver import public1 driver = webdriver.Chrome() driver.implicitly_wait(10) driver.get("http://www.baidu.com") public1.TestClass().search_keyword(driver) public1.TestClass().quit(driver)
单独的脚本文件public1.py 1 import time class TestClass: # 百度首页输入框,搜索关键字 def search_keyword(self, driver): driver.find_element_by_id(‘kw‘).send_keys(‘fda‘) driver.find_element_by_id(‘su‘).click() time.sleep(2) # 退出并关闭浏览器 def quit(self, driver): driver.quit()
2. 数据驱动测试
a)以数组的方式,对搜索的关键字进行参数化
from selenium import webdriver import time driver = webdriver.Chrome() driver.implicitly_wait(10) driver.get("http://www.baidu.com") key_word = [‘aaa‘, ‘bbb‘, ‘ccc‘] # 以数组的方式进行参数化 for word in key_word: driver.find_element_by_id(‘kw‘).clear() driver.find_element_by_id(‘kw‘).send_keys(word) driver.find_element_by_id(‘su‘).click() time.sleep(3) driver.quit()
b)读取txt文件
如果只有一个字段,则分行放在txt文件中
例如,百度首页分别搜索关键字“aaa”、“bbb”、“ccc”,参数化文件如下:
aaa
bbb
ccc
from selenium import webdriver import time driver = webdriver.Chrome() driver.implicitly_wait(10) driver.get("http://www.baidu.com") file = open(‘keyword.txt‘, ‘rt‘) # 用txt文件进行参数化 lines = file.readlines() file.close() for line in lines: driver.find_element_by_id(‘kw‘).clear() driver.find_element_by_id(‘kw‘).send_keys(line) driver.find_element_by_id(‘su‘).click() time.sleep(3) driver.quit()
如果有多个字段,字段间用逗号“,”隔开
例如:登录系统,用户名和密码,参数化文件如下:
username01,key1
username02,key2
username03,key3
分别登录3个账号 1 from selenium import webdriver import time driver = webdriver.Chrome() driver.maximize_window() driver.implicitly_wait(10) driver.get(‘http://192.168.3.108:11217/user/login?redirect=%2Fdashboard%2Fanalysis‘) file = open(‘account.txt‘, ‘rt‘) # 打开文件 lines = file.readlines() # 读取所有行 for line in lines: driver.find_element_by_id(‘username‘).send_keys(line.split(‘,‘)[0]) # 拆分字符串,以逗号为分割点 driver.find_element_by_id(‘password‘).send_keys(line.split(‘,‘)[1]) driver.find_element_by_xpath(‘//*[@id="formLogin"]/div[3]/div/div/span/button‘).click() # 登录 time.sleep(5) driver.find_element_by_xpath(‘//*[@id="app"]/div/div/div[2]/div[1]/div/div/span[3]/a/span‘).click() # 退出 time.sleep(2) driver.find_element_by_xpath(‘/html/body/div[6]/div/div[2]/div/div[2]/div/div/div[2]/button[2]‘).click() time.sleep(5) print(‘first, ok‘) time.sleep(5) driver.quit()
c)读取csv文件
csv文件可以用来读取一组数据(如用户名、邮箱、年龄、性别等信息)。
创建csv文件,创建Excel表格,另存为CSV(不要直接修改文件后缀名,那不是真正的csv文件)
from selenium import webdriver from selenium.webdriver.common.keys import Keys import time, csv # 导入csv包 driver = webdriver.Chrome() driver.maximize_window() driver.implicitly_wait(10) driver.get(‘http://192.168.3.108:11217/user/login?redirect=%2Fdashboard%2Fanalysis‘) infos = csv.reader(open(‘info.csv‘, ‘r‘)) # 读取csv文件 for info in infos: # 遍历文件中的每一行数据(读取的数据以数组的形式存储,若想取某一列数据,只需指定下标即可) driver.find_element_by_id(‘username‘).clear() driver.find_element_by_id(‘username‘).send_keys(info[0]) driver.find_element_by_id(‘password‘).clear() driver.find_element_by_id(‘password‘).send_keys(info[2]) time.sleep(1) driver.find_element_by_xpath(‘//*[@id="formLogin"]/div[3]/div/div/span/button‘).click() time.sleep(5) driver.find_element_by_xpath(‘//*[@id="app"]/div/div/div[2]/div[1]/div/div/span[3]/a/span‘).click() driver.find_element_by_xpath(‘/html/body/div[6]/div/div[2]/div/div[2]/div/div/div[2]/button[2]‘).send_keys(Keys.ENTER) time.sleep(2) time.sleep(5) driver.quit()
d)读取xml文件
待续。。。
5.环境变量配置在linux系统下,需要将可执行文件配置到环境变量或将文件移动到属于环境变量的目录里面方法一:将文件移动到属于环境变量目录中sudo mv chromedriver /user/bin