app ui自動化--2、元素定位的幾種方法+通過appium啟動被測app


一、環境搭建,參考:

https://www.cnblogs.com/wxinyu/p/16016918.html

二、模擬器配置(或者使用真機)

1、下載夜神模擬器

2、將D:\software\AndroidSDK24.4.1\platform-tools目錄下的adb.exe復制到D:\software\Nox\bin目錄下,分別替換D:\software\Nox\bin目錄下的adb.exe和nox_adb.exe

3、啟動夜神模擬器

4、使用adb devices命令查找設備鏈接,出現127.0.0.1:62001的代表配置成功

5、在模擬器中安裝被測程序

三、元素定位工具

做自動化測試最重要的是要先定位到元素,appium定位元素和selenium類似,准確的說appium也是繼承了selenium的方法。

工具1、uiautomatorviewer

uiautomatorviewer是Android SDK自帶的元素定位工具

a)前置條件:通過真機或虛擬機連接上電腦,可通過adb devices命令驗證

b)雙擊打開uiautomatorviewer.bat工具,工具在AndroidSDK安裝目錄的tools文件夾中

c)選擇圖中標記的區域,可展示手機當前頁面的元素

 d)通過點擊手機頁面相關區域,在右邊可以看到app的xml結構樹,可以獲取到每個節點的詳細屬性,例如text、class等,拿到元素信息后就可以使用代碼來操作了

 工具2、weditor

weditor是基於瀏覽器技術的UI查看器,直接在瀏覽器打開。

a)安裝weditor庫

pip install -U weditor # 該命令會安裝uiautomator2和Facebook-wda兩個庫,分別支持Android和ios的app

執行該命令后,報錯下圖

 

 解決辦法:

  已知目前版本是0.6.5,所以嘗試降低一下版本安裝

 pip install weditor==0.6.4

 

查看版本:pip list | findstr weditor

 

 大功告成!!!

 

b)第一次連接時需要在手機上安裝工具

python -m uiautomator2 init # 執行該命令會自動向手機端安裝 ATX和com.github.uiautomator.test兩個工具

 

c)啟動weditor服務

命令行輸入  python -m weditor

 

 此時會在瀏覽器中自動訪問 http://localhost:17310/ 可看到設備的當前停留頁面

 重點提醒:選擇設備后方的輸入框中一定要輸入你連接了電腦的設備名稱,不然會一直報錯 Local server not started, start with $ python -m weditor

 

 

 注意:

  如果用appium編寫APP自動化用例,而使用weditor來查看頁面元素。在運行appium用例腳本時需要停止UiAutomator守護服務,因為UiAutomator相關進程會導致appium依賴的uiautomatorviewer 服務無法運行。

  關閉方法參考文檔:https://github.com/openatx/uiautomator2#stop-uiautomator

 d)常見報錯

1、啟動程序報錯:
ModuleNotFoundError: No module named 'cv2'


解決辦法:
pip install opencv-python

 

2、啟動程序報錯:
No module named ‘StringIO’

解決辦法:
找到報錯的main文件,打開將“import StringIO”注釋掉,添加如下代碼:
try:
    from io import StringIO
except ImportError:
    from cStringIO import StringIO

 

工具3、Appium Inspector

 

 

a)啟動Appium服務(可通過命令行 輸入 appium 啟動,或通過GUI啟動)

 

b)打開Appium Inspector工具

 

c)可手動添加Desired Capabilities

d)常用參數

具體參數參照:

https://appium.io/docs/en/writing-running-appium/caps/

https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/caps.md

  

 e)設置好以下這些參數后,點擊右下角【Start Session】,可以獲取到每個節點的詳細屬性。

 

四、用例錄制

五、查找Packagename和Activity

方法1、

adb shell "logcat | grep START"

方法2、 下載AAPT build
-tools,並配置環境變量,下載地址:https://androidaapt.com/ aapt dump badging xx.apk (apk的絕對路徑) 這個命令會輸出很多東西,翻到最前方,找到package:name=xxx,引號中的就是packagename 向下拉,找到launchable-activity:name=xxx,引號中的就是activity name

六、自動化代碼編寫

1、前置條件

a)啟動Appium服務。--在命令行中輸入

appium

2、連接手機--使用python

a)導入webdriver

from appium import webdriver

b)連接設備和App

from appium import webdriver

server = 'http://localhost:4723/wd/hub'             # appium服務器的地址,端口默認就是4723,啟動appium服務時,可看到端口號
devices_system = {
    'platformName': 'Android',                      # 平台名
    'driverName': 'A5RNW17C03006527',               # 設備名,可通過adb devices查詢
    'platformVersion': '8.0.0',                     # 系統版本,可通過該命令查詢adb shell getprop ro.build.version.release,若是鴻蒙系統,寫10.0(實際測試鴻蒙系統貌似不支持連接uiautomatorviewer工具)
    'appPackage': 'com.xxx',                        # 被測系統的包名,可通過adb shell "logcat | grep START"查詢
    'appActivity': 'xxx.WelcomeActivity'            # 被測系統的Activity,可通過adb shell "logcat | grep START"查詢
}

driver = webdriver.Remote(server,devices_system)    # 連接手機和App

 

c)運行測試一下,以上代碼會執行打開App操作

說明:首次運行時,會自動向手機中安裝應用:Appium Settings、io.appium.uiautomato2.server這兩個工具

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM