pythonUI自动化之关键字+excel表格数据驱动
步骤:
1. 对selenium进行二次封装,创建关键字的库
2. 准备一个表格文件来写入所有测试用例步骤
3. 对表格内容进行读取,使用映射关系来对用例进行调用执行
4. 执行用例
1. 对selenium进行二次封装,创建关键字的库
from time import sleep from selenium import webdriver class Key: def __init__(self): self.driver = webdriver.Chrome() # 浏览器操作------------------------------------------------------------------ def open(self, txt): # 打开网址 self.driver.get(txt) # 最大化浏览器窗口 self.driver.maximize_window() # 隐式等待10秒 self.driver.implicitly_wait(10) def quit(self): # 退出浏览器 self.driver.quit() def sleep(self, txt): # 强制等待 sleep(txt) # 元素操作函数----------------------------------------------------------------- def input(self, txt, value, name="xpath"): # 输入 el = self.driver.find_element(name, value) el.send_keys(txt) def click(self, value, name="xpath"): # 点击 el = self.driver.find_element(name, value) el.click()
2. 创建一个表格,写入测试步骤
将表格放入项目任意路径下,记住路径,待会读取文件需要用到,我这里是放在这里
解释一下:(定位方法)为空,是因为关键字方法封装时,已经带上了默认参数
3. 写一个excel表格读取方法,对表格内容进行读取,使用映射关系来对用例进行调用执行。
看注释就明白是啥意思了
import os import openpyxl from UI.Base.selenium_key import Key # 获取该路径“../TestExampleExcel”模板下所有xlsx文件 filenames = os.listdir(r"../TestExampleExcel") # 实例化驱动 wd = Key() # 遍历所有xlsx文件 for i in filenames: excel = openpyxl.load_workbook(f'../TestExampleExcel/{i}') # 获取全部sheet页,遍历sheet页执行不同sheet页中的用例 for name in excel.sheetnames: sheet = excel[name] print(f"正在执行{i}文件中的{name}用例") # 打印每一行表格数据 for values in sheet.values: # 如果excel表格的第三列不是int类型,则不打印。 if isinstance(values[2], int): data = {} data['name'] = values[4] data['value'] = values[5] data['txt'] = values[6] # 将字典中的None值给去除掉 for k in list(data.keys()): if data[k] is None: del data[k] print(f"正在执行:{values[1]}") getattr(wd, values[3])(**data)
4. 执行用例
执行Excel文件读取方法即可