rf最为出名的就是关键字驱动结合数据驱动,基于表格编程的形态实现自动化测试。
基于python+Excel实现rf的底层逻辑:
1.在excel中填入关键字以及对应的参数
2.读取excel内容
3.基于excel内容执行相对于的关键字函数,实现自动化测试
1.excel

2.关键字驱动类
# web_key_demo02.py +++++++++++++++++++++++++++++++++
import time
from selenium import webdriver
#基于type生成对应的浏览器对象
def browser(txt):
try:
# driver本身只限于webdriver对象
driver = getattr(webdriver,txt)()
except Exception as e:
driver = webdriver.Chrome()
return driver
class KeyDemo:
def __init__(self, txt):
self.driver = browser(txt)
#访问url
def open(self,txt):
self.driver.get(txt)
#元素定位:8种元素定位
def locator(self,name,value):
return self.driver.find_element(name.strip(),value.strip())
#输入
def input(self, name,value,txt):
self.locator(name, value).send_keys(txt)
#点击
def click(self, name,value):
self.locator(name.strip(),value.strip()).click()
#关闭浏览器
def quit(self):
self.driver.quit()
def sleep(self,txt):
time.sleep(txt)
3.读取数据自动化执行
# read.py +++++++++++++++++++++++++++++++++
import openpyxl
from web_key_demo02 import KeyDemo
# 生成表格对象
excel = openpyxl.load_workbook('./data/test_case.xlsx')
# 工作表sheet的名字组成的列表
sheets = excel.sheetnames
for sheet in sheets:
# 工作表对象
sh = excel[sheet]
for line_value in sh.values:
# 一行一行的数据
# print(line_value)
# 表头不处理
if type(line_value[0]) == int:
data = {}
data['name'] = line_value[2]
data['value'] = line_value[3]
data['txt'] = line_value[4]
# 去除空数据
for key in list(data.keys()):
if not data[key]:
del data[key]
# 实例化driver对象
if line_value[1] == 'browser':
kd = KeyDemo(**data)
else:
# 反射拿到浏览器对象的各个方法,加括号传入参数执行
getattr(kd, line_value[1])(**data)