基本的脚本编写
pip install Appium-Python-Client
{
"appPackage": "com.xueqiu.android",
"appActivity": ".view.WelcomeActivityAlias",
"platformName": "android",
"deviceName": "ddd"
}
api demo capability
{
"platformName": "android",
"deviceName": "xxx",
"appPackage": "io.appium.android.apis",
"appActivity": ".ApiDemos",
"automationName": "uiautomator2"
}
不要使用绝对定位
/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.TabHost/android.widget.LinearLayout/android.widget.TabWidget/android.widget.RelativeLayout[3]/android.widget.TextView
相对定位
//*[@resource-id='xxxxddddddddd']
示例代码:https://github.com/appium/sample-code/tree/master/sample-code/examples
定位
uiautomator的定位: https://github.com/appium/appium-android-bootstrap/blob/master/bootstrap/src/io/appium/android/bootstrap/handler/Find.java
uiautomator2的定位:https://github.com/appium/appium-uiautomator2-server/blob/master/app/src/main/java/io/appium/uiautomator2/handler/FindElement.java
交互
断言
排查定位
session_id=`curl http://127.1:4723/wd/hub/sessions | awk -F\\" '{print $8}'`
while true;do sleep 0.5; echo; curl -X POST http://127.0.0.1:4723/wd/hub/session/$session_id/elements --data-binary '{"using":"xpath","value":"//*[@class=\\"android.widget.Toast\\"]"}' -H "Content-Type: application/json; charset=UTF-8" ;done
driver继承关系
RemoteWebDriver → DefaultMobleDriver → ApiumDriver → AndroidDriver
细节参考
演练app:https://github.com/appium/sample-code/raw/master/sample-code/apps/ApiDemos/bin/ApiDemos-debug.apk