一隻自動化測試小白的學習記錄——Python+Selenium基於Web的自動化測試(例項練習)
阿新 • • 發佈:2019-02-13
也有兩天沒更新了 哎~這學期的課還挺多的 都是利用課餘的一些時間來學習自動化測試(抱怨臉(╯▔皿▔)╯)
這兩天我在練習的是一個相對完整的Web自動化測試,也是對前些日子學習內容的整合,具體來說如下:
1.開啟瀏覽器
2.輸入網址開啟網頁(我是以鏈家網為練習的,因為想到明年畢業後要租房子hhhhhh)
3.找到網頁上我們需要的元素:登入元素、登入方式元素(可能會有多種登入方式,所以我選擇的是最基礎的賬號密碼登入)、賬號元素、密碼元素、確認登入元素
4.輸入元素內容:賬號和密碼
5.檢查登入結果
為了開啟頁面的穩定 我設定了等待時間
用了兩種方法 一個是time.sleep 還有一個是Webdriverwait(小聲嘀咕:聽說sleep不是特別好,但是挺方便的...)
首先,先拋開上述的五步,把等待時間的方法先設定好 (之前不會用插入程式碼的功能,現在學會了!)
def get_ele_times(driver,times,func):
return WebDriverWait(driver,times).until(func)
然後依次進行五個步驟,程式碼如下:
#開啟Chrome瀏覽器模組 def openBrowser(): return webdriver.Chrome() #輸入網址並開啟網頁頁面模組 def openUrl(driver,url): driver.get(url) driver.set_window_size(1300,800) #定位網頁上的五個元素(登入元素、登入方式元素、賬號元素、密碼元素、確認登入元素) def findElements(browser,arg): if 'login_text' in arg: login_ele=get_ele_times(browser,5,lambda x:browser.find_element_by_link_text(arg['login_text'])) login_ele.click() time.sleep(3) way_ele=browser.find_element_by_link_text(arg['way_text']) way_ele.click() time.sleep(1.5) account_ele=browser.find_element_by_css_selector(arg['account_select']) password_ele=browser.find_element_by_css_selector(arg['password_select']) confirm_ele=browser.find_element_by_css_selector(arg['confirm_select']) return account_ele,password_ele,confirm_ele #輸入元素內容 def sendVals(eletuple,arg): listkey=['name','pwd'] i=0 for key in listkey: eletuple[i].send_keys('') eletuple[i].clear() eletuple[i].send_keys(arg[key]) i+=1 time.sleep(2) eletuple[2].click() #檢查結果 def checkResults(browser,arg): try: browser.find_element_by_link_text(arg[check_text]) print('Test Successfully') except: print('Test Unsuccessfully')
最後一起寫在大函式login_test裡面:
def login_test(ele_dict,user_dict):
browser=openBrowser()
openUrl(browser,ele_dict['url'])
ele_tuple=findElements(browser,ele_dict)
sendVals(ele_tuple,user_dict)
checkResults(browser,ele_dict)
對了,還有主函式,裡面主要是放一些資料量,比如url,賬號,密碼等等,這樣,可以將方法和資料分離開來,不會那麼的亂,
在下次測試的時候,還可以使用本次指令碼,只不過把其中需要變的資料改一下就好了。
if __name__ == '__main__':
url='http://bj.lianjia.com/?utm_source=baidu&utm_medium=pinzhuan&utm_term=biaoti&utm_content=biaotimiaoshu&utm_campaign=sousuo&ljref=pc_sem_baidu_ppzq_x'
login_text="登入"
way_text='賬號密碼登入'
account_select='#con_login_user > form > ul > li.item.border-t.userName > input'
password_select='#con_login_user > form > ul > li.item.border-b.pwd > input'
confirm_select='#con_login_user > form > ul > li.li_btn > a'
account='13823920110'
password='abc123'
check_text='請輸入圖形驗證碼'
ele_dict={'url':url,'login_text':login_text,'way_text':way_text,'account_select':account_select,'password_select':password_select,'confirm_select':confirm_select,'check_text':check_text}
user_dict={'name':account,'pwd':password}
login_test(ele_dict,user_dict)
time.sleep(5)
其實在學自動化測試之前,我也沒什麼Python基礎,但是學校裡上過Java課,有一些程式設計基礎。不過,我更喜歡python一些,功能強大並且相比Java簡潔不少。
ps:對了,上面的測試過程,我是預設以點選登入按鈕並出現“請輸入圖形驗證碼”為測試成功的證明的,也查閱了一些如何測試驗證碼之類的資料,我...有些看不懂(T_T)...