簡介
? 環(huán)境搭建好了,其他方面的知識也準(zhǔn)備的差不多了,那么我們就開始下一步元素定位,元素定位宏哥主要介紹如何使用uiautomatorviewer,通過定位到頁面上的元素,然后進(jìn)行相應(yīng)的點擊等操作. 此外在介紹另一款工具:Inspector。
uiautomatorviewer是android-sdk自帶的一個元素定位工具,非常簡單好用,使用uiautomatorviewer,你可以檢查一個應(yīng)用的UI來查看應(yīng)用的布局和組件以及相關(guān)的屬性。
那么宏哥先來給各位小伙伴們介紹大哥--uiautomatorviewer,再來介紹小弟--Inspector。
一、大哥--uiautomatorviewer
大哥人物簡介:
大哥是皇族后裔,但是比劉皇叔強(qiáng)多了。人家有一個好爹--Google。
Android 4.1發(fā)布的,uiautomator是用來做UI測試的。也就是普通的手工測試,點擊每個控件元素 看看輸出的結(jié)果是否符合預(yù)期。比如 登陸界面 分別輸入正確和錯誤的用戶名密碼然后點擊登陸按鈕看看是否能否登陸以及是否有錯誤提示等。
功能性或者黑盒UI測試不需要測試人員了解程序如何實現(xiàn)的,只需要驗證各種操作的結(jié)果是否符合預(yù)期即可。這樣的測試可以分離團(tuán)隊的開發(fā)人員和測試人員。大家各干各的沒有太多的交集。
常用的UI測試方式就是人工驗證啦,就是測試人員拿著各種手機(jī)分別安裝要測試的程序然后看看是否能正確完成各種預(yù)定的功能。但是這種驗證方式是非常耗時間的,每次回歸都要全部驗證一邊,并且還容易出現(xiàn)人為錯誤。比較高效和可靠的UI測試方式就是自動化測試。自動化UI測試創(chuàng)建測試代碼來執(zhí)行測試任務(wù),各種測試任務(wù)分別覆蓋不同的使用場景,然后使用測試框架來運(yùn)行這些測試任務(wù)。而uiautomator 就是你的自動化UI測試工具。
Android SDK在4.1中提供了如下工具來支持UI自動化測試:
- uiautomatorviewer – 一個圖形界面工具來掃描和分析應(yīng)用的UI控件。
- uiautomator – 一個測試的Java庫,包含了創(chuàng)建UI測試的各種API和執(zhí)行自動化測試的引擎。
要大哥出山也就是使用該工具,需要滿足如下條件:
- Android SDK Tools, Revision 21 or higher
- Android SDK Platform, API 16 or higher
一、啟動uiautomatorviewer.bat
兩種啟動方法:
第一種方法:
1、打開目錄D:\software\android-sdk-windows\tools
2、雙擊啟動,啟動之后出現(xiàn)如下界面
?
1、如果不喜歡雙擊啟動的話,也可以在cmd里面通過指令啟動
先cd到tools目錄下,然后輸入uiautomatorviewer.bat回車后啟動服務(wù)
二、連接手機(jī)
1、cmd打開輸入adb devices,確認(rèn)手機(jī)已連上(以夜神模擬器為例)
?
2、打開手機(jī)淘寶頁面,讓屏幕處于點亮狀態(tài)
?
?
3、點左上角安卓機(jī)器人按鈕Devices Screenshot按鈕刷新頁面
?
1、移動鼠標(biāo)到需要定位的元素上,如搜索輸入框
2、右下角可以看到元素對應(yīng)的屬性
text:好沙發(fā)需要好坐墊
resource-id:com.taobao.taobao:id/home_searchedit
class:android.widget.EditText
四、點搜索框
1、前面一篇啟動app后,休眠五秒,等待頁面加載完成
2、通過id來定位到搜索框,然后點擊
五、參考代碼
# coding=utf- 8 # 1 .先設(shè)置編碼,utf- 8可支持中英文,如上,一般放在第一行 # 2 .注釋:包括記錄創(chuàng)建時間,創(chuàng)建人,項目名稱。 ''' Created on 2019 - 6 - 24 @author: 北京 -宏哥 QQ交流群: 707699217 Project:學(xué)習(xí)和使用定位元素工具 ''' # 3 .導(dǎo)入模塊 from appium import webdriver import time desired_caps = {} desired_caps[ ' platformName ' ] = ' Android ' #android的apk還是IOS的ipa desired_caps[ ' platformVersion ' ] = ' 8.0 ' #android系統(tǒng)的版本號 desired_caps[ ' deviceName ' ] = ' 127.0.0.1:62001 ' #手機(jī)設(shè)備名稱,通過adb devices 查看 desired_caps[ ' appPackage ' ] = ' com.taobao.taobao ' #apk的包名 desired_caps[ ' appActivity ' ] = ' com.taobao.tao.welcome.Welcome ' #apk的launcherActivity #desired_caps[ ' unicodeKeyboard ' ] = True #使用unicodeKeyboard的編碼方式來發(fā)送字符串 #desired_caps[ ' resetKeyboard ' ] = True #將鍵盤給隱藏起來 driver = webdriver.Remote( ' http://127.0.0.1:4723/wd/hub ' , desired_caps) #啟動服務(wù)器地址,后面跟的是手機(jī)信息 # 休眠五秒等待頁面加載完成 time.sleep( 5 ) driver.find_element_by_id( " com.taobao.taobao:id/home_searchedit " ).click() # driver.quit()
?
六、元素定位
1、appium的webdriver提供了11種元素定位方法,在selenium的基礎(chǔ)上擴(kuò)展了三個,可以在pycharm里面輸入driver.find_element_by然后會自動匹配出來
2、多的三種如下,在后面的會詳細(xì)介紹
driver.find_element_by_accessibility_id()
driver.find_element_by_android_uiautomator()
driver.find_element_by_ios_uiautomation()
(第三個是ios的可以暫時不用管)
二、小弟--Inspector
? 小弟人物簡介:
小弟不是很牛叉,但是小弟的存在必定有小弟存在的必要,之前看了好多文章都要放棄小弟,我覺地不要放棄,沒準(zhǔn)小弟可以替大哥大哥擋刀呢,呵呵,說笑了,畢竟過河的卒子可以當(dāng)車!!!
Appium Inspector是appium自帶的一個元素定位工具,前邊介紹了如何使用uiautomatorviewer進(jìn)行元素定位。這里就學(xué)習(xí)Appium Inspector是如何定位的。
Appium Inspector 對于測試的同學(xué)不得不說是一個神器,可以查詢到我們需要定位的元素的 id 等各種信息 ,還可以 錄制用戶行為,翻譯成腳本。逆天的是可以翻譯成多種語言的腳本。這并不意味著測試的同學(xué)可以不用學(xué)習(xí)語言和編程了,因為機(jī)器翻譯出的腳本一般很難一次執(zhí)行成功,其中很可能還需要經(jīng)過人工修改后才能順利執(zhí)行,但是這已經(jīng)可以為測試腳本的編寫帶來很大的遍歷,所以 Appium Inspector 還是值得我們?nèi)W(xué)習(xí)和使用。
一、設(shè)置appium
1、先不要啟動appium,因為啟動以后就不能操作appium設(shè)置界面,必須在未啟動的時候進(jìn)行操作
2、點開android setting界面(機(jī)器人圖標(biāo))
3、勾選Application Path,添加被測app的路徑
4、Devices name處添加設(shè)備名稱(adb devices查看到的)
(注意:通過這種方法也可查看到apk的包名和Launch Activity)
?
二、開啟appium
1、手機(jī)確保連接電腦(adb devices查看)(仍然以夜神模擬器為例)
?
2、點appium右上角三角形圖標(biāo),會啟動服務(wù)
?
?
3、這時候可以看到手機(jī)上安裝淘寶應(yīng)用,并會啟動淘寶
4、點appium右上角的搜索圖標(biāo)
?
?
5、點Inspector Window界面的 Refresh 按鈕刷新界面
?
?
三、Ispector Window
1、手機(jī)上打開需要單位元素的界面,然后點Refresh按鈕刷新
2、左邊菜單樹,可以挨個點開
3、如果想單位界面上的“是”和“否”按鈕,從菜單樹就可以看到這兩個元素的結(jié)構(gòu)
四、查看屬性
1、選中左側(cè)菜單樹對應(yīng)的元素,在右下角查看對應(yīng)屬性
五、常見異常
1、在使用過程中,你會發(fā)現(xiàn)經(jīng)常會報以下這個錯誤
2、每次啟動都會給你手機(jī)上重新安裝一次應(yīng)用
3、并且不能用鼠標(biāo)指定某個元素,沒有uiautomatorviewer使用方便
(要是以上三種問題你都遇到了,怎么辦???那就放棄吧!!!)?
相信很多人在使用過程中,都會遇到中文無法輸入問題,宏哥在后續(xù)文章里會手把手教大家如何輸入中文。
三、小結(jié)
Android SDK中的UIAutomator中本身是不支持網(wǎng)頁中的UI元素定位,下面介紹幾種常用的定位app內(nèi)部的網(wǎng)頁的UI元素的方法。
一、使用chrome瀏覽器調(diào)試移動端網(wǎng)頁
? ? ? ?這是使用最多的一種方法。首頁確保自己的手機(jī)已經(jīng)跟電腦連接且處于開發(fā)者模式。
? ? ? ?打開PC端的谷歌瀏覽器,輸入chrome://inspect/#devices,會看到下圖所示界面:
? ? ?點擊需要測試的網(wǎng)頁下方的inspect,且保證手機(jī)界面停留在那個頁面。
?
? ? ? 這樣打開后是不是就熟悉了,點擊上方紅色標(biāo)記的就可以操作進(jìn)行定位了~~~
?
?二、Android手機(jī)的鋪助功能帶有TalkBack
? ? ? ? 之前一直用的是谷歌的方法,但是最近發(fā)現(xiàn)使用talkback可以直接用UIAutomator定位元素。??
? ? ? ? Android系統(tǒng)一般自帶一個TalkeBack功能。但這里千萬要注意:打開之后整個系統(tǒng)的操作都變得不同了!!滑動界面需要兩個手指,單擊變成雙擊。打開之后用UiAutomatorViewer獲取webview界面的內(nèi)容,你就會發(fā)現(xiàn)原來webview里面獲取不到的ui元素,現(xiàn)在已經(jīng)可以可以獲取到了。即使現(xiàn)在你關(guān)掉TalkBack,也能獲取到,除非重啟手機(jī)才會回到不能獲取的狀態(tài),所以開啟后我們可以立即關(guān)閉,以方便操作。有些手機(jī)沒有talkBack的可以去應(yīng)用市場下載。
? ? ? ?功能路徑:
? ? ? ?原生系統(tǒng):設(shè)置 – 輔助功能(Accessibility) – TalkBack
? ? ? ?華為EMUI系統(tǒng):設(shè)置 – 高級設(shè)置 – 輔助功能 – TalkBack
三、宏哥在小弟哪里遇到的問題
?
查看appium日志的error發(fā)現(xiàn)沒有設(shè)備名字報錯
?
將夜神模擬器的名字加上就成功了
宏哥不能保證所整理都符合大家的口味,但我能保證每一篇都是用心去寫和用心去整理,我始終認(rèn)同“分享的越多,你的價值增值越大”,歡迎大家關(guān)注我的博客和個人公眾號的技術(shù)分享。在分享中進(jìn)步,越努力越幸運(yùn),期待我們都有美好的明天!
支持宏哥的朋友們和宏哥的宏粉記得點波推薦哦,您的肯定就是我進(jìn)步的動力。鄙人先在這里給您道謝了,謝您嘞~~
個人公眾號(因為許多文章都被搬到別人的公眾號里了,還是原創(chuàng),所以宏哥果斷也開一個公眾號。打算與博客園文章同步,希望大家隨時隨地學(xué)習(xí)與進(jìn)步):
微信群(因為有人給我發(fā)短消息說公司不讓用QQ,就幫忙建立一個微信群,歡迎加入討論和交流)
我的博客即將同步至騰訊云+社區(qū),邀請大家一同入駐:https://cloud.tencent.com/developer/support-plan?invite_code=2k3h2stkvscgc
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
