1. 程式人生 > >一隻自動化測試小白的學習記錄——Python+Selenium基於Web的自動化測試(例項練習)

一隻自動化測試小白的學習記錄——Python+Selenium基於Web的自動化測試(例項練習)

也有兩天沒更新了 哎~這學期的課還挺多的 都是利用課餘的一些時間來學習自動化測試(抱怨臉(╯▔皿▔)╯)

這兩天我在練習的是一個相對完整的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)...