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)
# 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)