坑之初體驗
在Appium的初體驗中,遇到了一些坑坑洼洼。將他們記錄下來,以后方便查閱。
1. session大于60秒沒接收到命令自動關閉
通過Appium-Python-Client連接到appium的session,60秒內沒有操作的話,session就會被自動關閉,操作指的是元素的定位、獲取、點擊、輸入等。
解決辦法: desired_caps中加入超時時間配置
Python代碼如下:
desired_caps = {}
# 在啟動配置里面加入newCommandTimeout參數
desired_caps['newCommandTimeout'] = 200
2. Appium通過npm安裝不上,咋個辦
解決辦法:
使用淘寶鏡像cnpm安裝, 具體可見我前一篇文章里的安裝appium
但是注意cnpm默認在當前目錄安裝npm包。
3. UIAutomationviewer不支持動態頁面
解決辦法:
- 先不啟動Appium,直接開UIAutomationviewer,先獲取到想要的控件信息。
- 啟動安卓虛擬機,在虛擬機里邊獲取(但是虛擬機需要安裝自己想要的包,甚是麻煩啊);
- 用driver.page_source查看源碼,然后正則抓取相關控件信息(但是我好像沒發現id信息), 盡量不要用xpath定位xml頁面,查找非常慢;
- hierarchyviewer代替此工具,前提是設備開啟ViewServer(虛擬機是默認開啟的),真機一般只有工程機能開啟,市面上目前發現只有小米設備可以開啟
4. 怎么查看設備是否連接
解決辦法:
設備通過usb連接上計算機以后,在cmd窗口輸入adb devices
可獲取到設備信息。
5. 獲取包名
解決辦法:
一般情況可以用查看日志的辦法,可以先清空日志
adb logcat -c
然后獲取正在展示app,前提是手機端要打開此app
adb logcat | grep display
然后可以從正在展示的內容里提取 package和activity了,但是我能獲取到支付寶的,QQ卻不可以,很神奇。
20180317 21:06 updated:
- mac/linux
adb shell dumpsys activity | grep "mFocusedActivity"
- windows
adb shell dumpsys activity | findstr "mFocusedActivity"
6. adb devices獲取不到夜神模擬器
1、dos下,cd進入到夜神模擬器的bin目錄
代碼:
nox_adb connect 127.0.0.1:62001
2.dos下,進入進Android SDK下的platform-tools目錄
代碼:
adb connect 127.0.0.1:62001
7. 打開通知欄
driver.open_notifications()
8. adb devices顯示無設備(未連接上手機)
adb版本過低,需要更新adb版本。
-
更換數據線
三條數據線,一條移動電源贈送,一條品勝,一條0.01元拼團,手機均為紅米Note4。但是只有1分錢那條能正常連接usb,其他的adb無法獲取到設備。
檢查手機的USB調試模式是否打開(請打開安裝等權限)
9. no-reset
如果不想每次登陸都是一個很純凈的環境的話,可以在desired_caps帶上這個參數, 設置為True就好。
desired_caps['no-reset'] = True
10. 釘釘此類應用無法啟動
可以先啟動手機主頁面, 然后從里邊找到釘釘click。