ATX 學習 (二)-Atx Weditor


1、Atx的安裝

安裝adb
使用以下命令安裝atx最新版
pip install --pre -U uiautomator2 
手機接到電腦上之后,需要先運行一下命令:
python -m uiautomator2 init將需要的程序部署到手機上(一次即可)

2、Atx Weditor

ATX Weditor是一個python庫,命令行安裝 
pip install --pre weditor , 命令行啟動python -m weditor(PS: windows可以雙擊weditor快捷方式),會自動打開一個網頁,用網頁作為其Inspector

3.連接設備

appium需要構造一個desiredCapabilities,其中的udid字段通常對應設備的序列號。
以一個常見的配置文件為例

desired_caps = {
# 平台 android
'platformName': 'Android',
# 手機設備名稱
'deviceName': '2d869e6',
# android系統的版本號
'platformVersion': '9',
# 安裝包路徑
# 'app': 'F:\download\XXX.apk',
# apk包名
'appPackage': 'com.tencent.mm',
# apk的launcherActivity
'appActivity': '.ui.LauncherUI',
# 默認neReset為false,不要在會話前重置應用狀態,每次啟動都跟第一次啟動一樣,變為true則不一樣
# 會話前不重置應用狀態 默認是false
'noReset': True,
# 'appWaitActivity':'com.tencent.mm.plugin.webview.ui.tools.WebViewUI',
# 下面兩行代碼是為了屏蔽軟件盤以至於可以輸入中文
'unicodeKeyboard': True, # 使用unicode編碼方式發送字符串
# 'resetKeyboard': False, # 將鍵盤隱藏起來
# 在 Android 上,這也會在會話結束后自動清除被測應用
"fullReset": False,
'chromeOptions': {'androidProcess': 'com.tencent.mm.plugin.webview.ui.tools.WebViewUI'}
# "automationName": "uiautomator2"
# newCommandTimeout設置為更大的值
# "newCommandTimeout":240
}

 

atx是沒有這類配置文件,必需的字段只有一個就是設備的序列號,這里用ip地址也可以。其他的都是可選的。對於是否啟動應用給用戶提供了的選擇權。
atx代碼為:

import uiautomator2 as u2
d = u2.connect("dgsdg")
d.set_fastinput_ime(True)
s = d.session("com.netease.cloudmusic")

 

感覺方便多了,fastinput_ime是專門為自動化定制的輸入法,支持中文的輸入,和一些特殊的指令如搜索,清空。
d.session函數對應於appium的session機制,每次運行相關代碼的時候都會先檢測一下應用是否存活。

注:atx連接的時候可以填手機的序列號或者ip地址。因為測試代碼最終是與手機上的一個服務的atx-agent通信,所以也支持填寫IP,但是需要運行代碼的電腦跟手機在同一個網段。

4、控件的選擇與操作

appium常用定位元素的方法為find_element_by_xpath, find_element_by_id, find_element_by_text
一種常見的寫法為

driver.implicitly_wait(10) # 設置元素的查找時間10s
element = driver.find_element_by_text("Settings")
if element:
element.click()
轉化成atx代碼為

d(text="Settings").click(timeout=10)
atx不推薦用xpath,因為要dump所有的hierarchy,速度比較慢。推薦用的時候各種查詢條件混合一起使用。
典型的用法為

d(className="android.widget.Button", textContains="登錄").click()
# using xpath
d.xpath('//android.widget.Button[contains(@text, "登錄")]').click()

 

5、彈框的處理

現在高版本的手機基本都會有一些權限確認窗口或者安裝確認框。如果處理不好會非常影響自動化。

看到一個帖子說是可以配置一下就可以解決彈框了(PS:應該是只針對iOS的) https://testerhome.com/topics/14513

driver.switch_to.alert.accept()
atx的方法更自由一點,你可以自由選擇處理什么內容的彈窗,以及怎么處理。一個常見的自動點擊安裝按鈕的方法

d.watcher("INSTALL").when(text="安裝").click()
d.watcher("NEXT").when(text="下一步").click()
d.watchers.watched = True

 

官方文檔:https://github.com/openatx/uiautomator2
參考資料:https://testerhome.com/topics/14880


免責聲明!

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



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