线下班第二期_Appium 脚本编写

基本的脚本编写

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