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)