09airtest-selenium:web自動(dòng)化測(cè)試實(shí)戰(zhàn)
同學(xué)們好,我是網(wǎng)易AirtestProject的團(tuán)隊(duì)成員曉娟,歡迎大家來(lái)到我們的視頻教程專(zhuān)欄《14天Airtest自動(dòng)化測(cè)試小白課程》。
很多同學(xué)都知道,我們這個(gè)AirtestProject項(xiàng)目包含airtest和poco兩個(gè)測(cè)試框架,其實(shí)我們這個(gè)項(xiàng)目還有另外一個(gè)測(cè)試框架,叫airtest-selenium,是對(duì)selenium的python庫(kù)做的一層封裝,它主要用來(lái)對(duì)瀏覽器進(jìn)行自動(dòng)化測(cè)試,包含以下幾個(gè)方面的改動(dòng):
添加了部分圖象識(shí)別的接口
封裝了一些多標(biāo)簽頁(yè)切換的接口
運(yùn)行時(shí)自動(dòng)記錄核心api的log內(nèi)容,可生成網(wǎng)頁(yè)版的測(cè)試報(bào)告
那么今天我們就來(lái)學(xué)習(xí)下,如何使用這個(gè)封裝好的airtest-selenium,在瀏覽器上進(jìn)行自動(dòng)化測(cè)試。
airtest-selenium輔助窗功能
默認(rèn)情況下,IDE的selenium Window是沒(méi)有展示出來(lái)的,我們可以在IDE的頂部菜單--窗口處,勾選上selenium Window,此時(shí)在poco的輔助窗下面,就會(huì)出現(xiàn)airtest-selenium的輔助窗了:

另外,在使用IDE進(jìn)行瀏覽器的自動(dòng)化之前,需要在選項(xiàng)--設(shè)置中,把chrome path填上,否則在使用打開(kāi)瀏覽器的功能按鈕時(shí),會(huì)出現(xiàn)彈窗,提示請(qǐng)?jiān)O(shè)置chrome path:


設(shè)置好chrome path以后,我們就可以用快捷按鈕打開(kāi)我們的瀏覽器來(lái)進(jìn)行元素檢索和錄制腳本了。
點(diǎn)擊輔助窗的打開(kāi)瀏覽器的按鈕,可以看到我們打開(kāi)了剛才設(shè)置好的chrome瀏覽器,并且在腳本編輯窗的上面,會(huì)出現(xiàn)了一條亮黃色的提示,讓我們選擇是否插入初始化腳本,點(diǎn)擊yes,腳本編輯窗就會(huì)被自動(dòng)插入打開(kāi)瀏覽器的初始化語(yǔ)句:

初始化語(yǔ)句中包含了一些必要的引入,創(chuàng)建了1個(gè)chrome實(shí)例,并且設(shè)置隱式等待時(shí)間為20s。
接下來(lái)我們看看元素檢索和定位的功能按鈕,單擊元素定位按鈕,再把鼠標(biāo)移動(dòng)到瀏覽器的元素上,會(huì)出現(xiàn)1個(gè)藍(lán)色的半透明框框選住對(duì)應(yīng)的元素,此時(shí)我們單擊鼠標(biāo)左鍵,即可在腳本編輯窗中插入該元素的定位腳本,自動(dòng)生成的定位腳本所用的定位方法都是find_element_by_xpath():

再來(lái)看看錄制功能,這個(gè)錄制功能跟airtest和poco的錄制功能有點(diǎn)類(lèi)似,都是隨著我們?cè)诖郎y(cè)設(shè)備上進(jìn)行一些操作,然后自動(dòng)幫我們生成對(duì)應(yīng)的操作腳本:

可以看到,隨著鼠標(biāo)在瀏覽器上進(jìn)行一系列的操作,腳本編輯窗也出現(xiàn)了對(duì)應(yīng)的自動(dòng)化腳本,比較特別的是,當(dāng)我們點(diǎn)擊某個(gè)元素,會(huì)觸發(fā)打開(kāi)1個(gè)新標(biāo)簽頁(yè)的動(dòng)作時(shí),腳本也會(huì)自動(dòng)幫我們錄制切換標(biāo)簽頁(yè)的語(yǔ)句。
輔助窗的常用api介紹
輔助窗給我們提供了11個(gè)常用api的功能按鈕,我們分別來(lái)看一下:

元素定位和實(shí)操
借助selenium Window這個(gè)輔助窗,我們已經(jīng)可以非常容易地完成大部分的web自動(dòng)化腳本。但是在面對(duì)更多復(fù)雜的測(cè)試需求和操作時(shí),我們還是要擁有一定的自己編寫(xiě)腳本的能力。
在web自動(dòng)化中,最核心也最基礎(chǔ)的事情就是進(jìn)行元素定位,那么除了借助輔助窗幫我們生成定位腳本之外,怎么自己編寫(xiě)各種元素的定位腳本呢?
先來(lái)學(xué)習(xí)1個(gè)簡(jiǎn)單的小技能,在瀏覽器上審查元素:在網(wǎng)頁(yè)的空白處,單擊右鍵,選擇檢查,在彈出的檢視窗口中,單擊檢視元素的按鈕,然后把鼠標(biāo)移動(dòng)到待檢視的元素上,就會(huì)自動(dòng)幫我們?cè)谠创a中定位到該元素,方便我們查看元素的相應(yīng)屬性:

并且,此時(shí)右鍵點(diǎn)擊高亮的元素源代碼,可以復(fù)制該元素的xpath屬性,用于元素定位,剛才我們?cè)贗DE錄制的元素定位腳本,都是根據(jù)元素的xpath屬性來(lái)定位的。除了這個(gè)以外,我們還可以利用元素的name、id、class name等屬性來(lái)進(jìn)行元素定位:
find_element_by_id()
find_element_by_name()
find_element_by_class_name()
find_element_by_xpath()
find_element_by_link_text()
find_element_by_partial_link_text()
find_element_by_css_selector()
寫(xiě)好元素定位之后,我們就可以對(duì)該元素進(jìn)行點(diǎn)擊操作、發(fā)送關(guān)鍵詞和斷言該元素是否存在等等:
# 元素點(diǎn)擊
driver.find_element_by_xpath("//*[@id=\"right_content\"]/div/div/div/div[2]/div/a[4]").click()
# 輸入
driver.find_element_by_id("title").send_keys("123")
# 斷言元素存在
driver.assert_exist("//div[@alt='到學(xué)術(shù)首頁(yè)']", "xpath", "請(qǐng)?zhí)顚?xiě)測(cè)試點(diǎn).")
除了這些常見(jiàn)的元素定位以外,我們還有可能遇到稍微特別一點(diǎn)的元素定位,比如下拉框定位、彈窗定位等等。
下拉框定位我們會(huì)用到select類(lèi),定位的基本步驟為:
①定位到下拉框這個(gè)元素
②實(shí)例化Select類(lèi)
③調(diào)用Select類(lèi)里面的方法來(lái)實(shí)現(xiàn)下拉框選項(xiàng)定位
# Select類(lèi)需要引入
from selenium.webdriver.support.select import Select
# 定位下拉框元素
ime_select = driver.find_element_by_id('ime')
# 實(shí)例下拉框
select = Select(ime_select)
# 提供3種定位方式,下拉選項(xiàng)的索引、value值和文本值
select.select_by_index(0)
select.select_by_value('2')
select.select_by_visible_text('關(guān)閉')
而彈出框定位我們會(huì)用到alert類(lèi),彈出框的定位語(yǔ)句為driver.switch_to_alert()。
# 引入Alert類(lèi)
from selenium.webdriver.common.alert import Alert
print('alert彈出框的文本信息為:',driver.switch_to_alert().text)
# 點(diǎn)擊彈框的確認(rèn)按鈕
driver.switch_to_alert().accept()
最后,我們一起來(lái)完成1個(gè)簡(jiǎn)單的腳本,要求如下:
1.打開(kāi)百度首頁(yè)
2.點(diǎn)擊icon打開(kāi)新的標(biāo)簽頁(yè)
3.清空輸入框,輸入關(guān)鍵詞Airtest
4.切換到上一個(gè)打開(kāi)的標(biāo)簽頁(yè)
5.下拉框定位與實(shí)操
6.彈出框定位與實(shí)操

最后我們可以查看下這個(gè)airtest-selenium腳本的運(yùn)行報(bào)告:

課下的時(shí)候,希望同學(xué)們能自己動(dòng)手完成這個(gè)簡(jiǎn)單的小例子,鞏固下今天學(xué)習(xí)的有關(guān)airtest-selenium的內(nèi)容。
需要這個(gè)示例腳本來(lái)學(xué)習(xí)的同學(xué),可以到我們的官方公眾號(hào)回復(fù)“A09”即可獲取。

小結(jié)
那么,這節(jié)課的內(nèi)容就到此為止啦,今天我們主要學(xué)習(xí)了airtest-selenium輔助窗的功能、常用的api介紹以及元素的定位與實(shí)操。

至此,AirtestProject項(xiàng)目各個(gè)庫(kù)的介紹與基本使用,我們就都講完了。不過(guò)我們?cè)谥v授這些測(cè)試框架的使用時(shí),都是基于我們特定的編輯器AirtestIDE。那還有很多同學(xué)想要在命令行運(yùn)行腳本或者使用其它python的編輯器,比如pycharm等等,別著急,下節(jié)課我們就會(huì)帶大家聊一聊,如何脫離AirtestIDE來(lái)使用這些測(cè)試框架。下期我們不見(jiàn)不散~