python+appium自動(dòng)化測(cè)試元素定位

關(guān)于app自動(dòng)化測(cè)試,元素定位工具有三個(gè):

appium自帶的Appium Inspector工具

Android ADT原生的工具

python版uiautomator2中的weditor

由于我常用的是前兩個(gè),所以下面只介紹前面兩種元素定位工具(以下內(nèi)容中均以微博為例子)

一、元素定位工具

(一).Appium Inspector

使用該工具的使用前提:

1.客戶(hù)端通過(guò)adb devices的dos命令確認(rèn)是否連接設(shè)備

2.當(dāng)前連接的設(shè)備是否被其它應(yīng)用程序占用

3.已安裝appium desktop(appium的desktop下載地址:http://appium.io/

使用步驟如下:

1.啟動(dòng)appium服務(wù)器,點(diǎn)擊右上角的第一個(gè)按鈕(放大鏡按鈕),如下圖:

2.進(jìn)入后頁(yè)面顯示如下圖所示,一般情況下都選擇本地服務(wù)

3.參數(shù)設(shè)置完成后點(diǎn)擊右下角的Start Session,進(jìn)入如下圖所示頁(yè)面

在該頁(yè)面就可以進(jìn)行元素定位了

(二).uiautomatorviewer—僅限Android設(shè)備使用

使用該工具的使用前提:

1.客戶(hù)端通過(guò)adb devices的adb命令確認(rèn)是否連接Android設(shè)備

2.當(dāng)前連接的設(shè)備是否被其它應(yīng)用程序占用

3.具有運(yùn)行Android SDK功能的Windows

4.安裝jdk1.8(由于目前不支持jdk1.8以上的版本,需要使用該工具要安裝jdk1.8的版本)

5.使用Android5.0以上系統(tǒng)

6.確保為設(shè)備打開(kāi)了開(kāi)發(fā)人員模式,并打開(kāi)USB調(diào)試

安裝:

1.在android studio的啟動(dòng)頁(yè)面當(dāng)中,選擇右下角的configure -> SDK Manager會(huì)彈出如圖:選擇android SDK -> SDK Tools,按圖中勾選,點(diǎn)擊ok進(jìn)入安裝,安裝完成即可關(guān)閉android studio。記住圖中Android SDK Location對(duì)應(yīng)

2.在Android studio中找到SDK,找到uiautomator,存放的位置為:D:\Android-SDK\tools\bin\uiautomatorviewer.bat

使用步驟如下:

1.找到uiautomatorviewer.bat文件,雙擊打開(kāi)

2.開(kāi)啟后頁(yè)面顯示如下圖:

3.若在定位時(shí)出現(xiàn)下圖問(wèn)題,可以嘗試以下幾種解決方法:

查看手機(jī)是否開(kāi)啟開(kāi)發(fā)者權(quán)限,打開(kāi)USB調(diào)試

在adb命令提示符中輸入adb devices查看手機(jī)是否連接到PC端,再使用adb shell是否能進(jìn)入到手機(jī)(exit退出)

應(yīng)用程序是否被占用

關(guān)閉uiautomatorviewer,重新打開(kāi)是否能定位到

(三).兩種定位工具的區(qū)別

appium inspector需要啟動(dòng)appium服務(wù)器,填寫(xiě)Appium Desired Capabilities,略顯麻煩,而uiautomatorviewer只需要連接手機(jī)

appium inspector實(shí)時(shí)獲取當(dāng)前頁(yè)面布局,而uiautomatorviewer方便存儲(chǔ),不需要實(shí)時(shí)獲取

appium inspector在操作App到下一頁(yè)面時(shí),刷新后經(jīng)常會(huì)看到在轉(zhuǎn)圈圈,很久都沒(méi)有更新

appium inspector中控件屬性有xpath的絕對(duì)定位,而uiautomatorviewer沒(méi)有xpath的絕對(duì)定位

uiautomatorviewer獲取頁(yè)面布局時(shí)經(jīng)常會(huì)獲取不到

每種工具都有缺陷,選擇最適合自己的就好啦

三、元素定位的方法

下面介紹幾種元素定位方式,常見(jiàn)的元素定位方式是前三種

(一).ID定位

id對(duì)應(yīng)控件屬性列表中的:resource-id

driver.find_element_by_id("com.sina.weibo:id/tv_title_lookaround")

(二).XPATH定位

xpath對(duì)應(yīng)控件屬性列表中的:xpath(絕對(duì)定位只有appium inspector中才有)

# 絕對(duì)定位

driver.find_element_by_xpath("/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout[2]/android.widget.LinearLayout/android.widget.TextView")

# 相對(duì)定位

driver.find_element_by_xpath("http://android.widget.Button[@text='登錄']")

(三).CLASSNAME定位

classname對(duì)應(yīng)控件屬性列表中的:class

注意:由于一個(gè)頁(yè)面中可能會(huì)存在多個(gè)按鈕的classname一致,但使用classname定位時(shí),默認(rèn)選擇頁(yè)面中的第一個(gè)classname,可以將所有classname相同的元素放置在一個(gè)list列表中,點(diǎn)擊你所需要的位置的元素即可(列表中的元素從0開(kāi)始)

driver.find_element_by_class_name("android.widget.TextView")

(四).accessibility定位

accessibility對(duì)應(yīng)控件屬性列表中的:content-desc

driver.find_element_by_accessibility_id("請(qǐng)輸入手機(jī)號(hào)或郵箱")

(五).text定位

text對(duì)應(yīng)控件屬性列表中的:text

driver.find_element_by_name("登錄")

(六).其它定位

元素定位除了使用find_element_by_xxx,還可以使用page_source,page_source能夠查找到這個(gè)頁(yè)面的所有元素,再通過(guò)if/else來(lái)查找目標(biāo)元素是否存在于頁(yè)面中

page_source = self.driver.page_source

? ? ? ? ? ? if "image_cancel" in page_source:

? ? ? ? ? ? ? ? self.driver.find_element(*locator).click()

? ? ? ? ? ? elif "tips" in page_source:

? ? ? ? ? ? ? ? pass

關(guān)于PO模式的元素定位方式,會(huì)在后面PO模式時(shí)再進(jìn)行介紹

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容