1. 程式人生 > 其它 >python selenium自動化程式碼與測試步驟和測試資料分離

python selenium自動化程式碼與測試步驟和測試資料分離

技術標籤:軟體測試python

'''
以下為檔案中的測試資料,第一列為函式步驟,第二列為資料,檔案存放路徑為:e:\\data.txt
open_browser||chrome
visit||https://www.baidu.com
sleep||3
assert_word||百度
quit||0
'''

from selenium import webdriver
import sys
import time

driver='' #類變數、全域性變數,存放獲取到的瀏覽器驅動,以便其他函式使用

def get_test_step_data(data_file): #將檔案中的測試資料讀取出來存在列表中
test_step_data=[] #存放測試資料的列表 with open(data_file,'r',encoding='utf-8') as fp: #讀取測試資料 for data in fp: if len(data.split('||'))==2: #判斷讀取的每行資料切割後是否為兩個 action=data.split('||')[0].strip() #獲取該行切割後的第一個資料,並去除前後空格 value=data.split('||')[1].strip(
) #獲取改該行切割後的第二個資料,並去除前後空格 test_step_data.append([action,value]) #將獲取到的該行資料以列表的形式存入test_data列表中 else: #如果切割後的資料不是三個,則資料格式錯誤 print('此行測試資料格式不正確:%s' %data) return test_step_data #將測試資料返回 def open_browser(browser_name): #根據測試資料獲取指定瀏覽器的驅動 global driver #全域性變數使用方法
if 'ie' in browser_name: driver=webdriver.Ie() #將獲取到的瀏覽器驅動存入全域性變數中 elif 'chrome' in browser_name: driver=webdriver.Chrome() elif 'firefox' in browser_name: driver=webdriver.Firefox() else: print('不支援該瀏覽器:%s' %browser_name) exist() driver.set_page_load_timeout(10) #設定超時時間,如果訪問網頁時間超過10秒就報錯 return driver #返回驅動 def visit(url): #訪問網址,獲取網頁資料url global driver try: driver.get(url) #訪問網址,獲取網頁資料url except TimeoutException: print('網頁訪問超時') def sleep(times): #等待時間函式 try: times=int(times) #字串轉換為數字 except: times=3 time.sleep(times) def assert_word(key_word): #斷言網頁資料中是否包含指定的關鍵字key_word global driver try: assert key_word in driver.page_source #斷言網頁原始碼中是否包含指定關鍵字 except AssertionError: print(key_word,'關鍵字斷言失敗') except Exception as e: print('出現了其他異常',e) else: print(key_word,'關鍵字斷言成功') def quit(a): #關閉瀏覽器 global driver driver.quit() test_step_data=get_test_step_data('e:\\data.txt') #獲取檔案中的測試動作和測試資料 for data in test_step_data: #遍歷測試資料 action=data[0] #獲取測試動作 value=data[1] #獲取測試資料 command="%s('%s')" %(action,value) #將動作和資料組合成函式字串 eval(command) #執行函式字串 print('測試完成')