python selenium自動化程式碼與測試步驟和測試資料分離
阿新 • • 發佈:2021-02-16
'''
以下為檔案中的測試資料,第一列為函式步驟,第二列為資料,檔案存放路徑為: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('測試完成')