参考:
https://developer.android.com/reference/androidx/test/uiautomator/UiSelector

对应 uiautomator 中的方法
主要就是根据定位到元素属性和使用对用的Java API进行元素定位
from appium import webdriverfrom appium.webdriver.common.touch_action import TouchActionimport timedesired_caps = {'platformName': 'Android', # 测试Android系统'platformVersion': '7.1.2', # Android版本 可以在手机的设置中关于手机查看'deviceName': '127.0.0.1:62001', # adb devices 命令查看 设置为自己的设备'automationName': 'UiAutomator2', # 自动化引擎'noReset': True, # 不要重置app的状态'fullReset': False, # 不要清理app的缓存数据'appPackage':"com.sina.weibo", # 应用的包名'appActivity': ".SplashActivity" # 应用的活动页名称}driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_capabilities=desired_caps)time.sleep(6)# 点击 + 号driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.sina.weibo:id/titleSave")').click()time.sleep(1)driver.find_element_by_android_uiautomator('new UiSelector().description("写微博")').click()time.sleep(1)driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.sina.weibo:id/tv_location_ly").clickable(true)').click()
childSelector 根据父元素查找子元素
| UiSelector | childSelector)(UiSelector selector) Adds a child UiSelector criteria to this selector. |
|---|---|

父元素的定位是
new UiSelector().resourceId("org.cnodejs.android.md:id/toolbar")
通过调用child方法来定位子元素
new UiSelector().resourceId("org.cnodejs.android.md:id/toolbar").childSelector(new UiSelector().className("android.widget.ImageButton"))
UiScrolleable 滚动视图窗口
参考 https://developer.android.com/reference/android/support/test/uiautomator/UiScrollable.html
appium 使用说明文档
https://appium.io/docs/en/writing-running-appium/android/uiautomator-uiselector/
from appium import webdriverfrom appium.webdriver.common.touch_action import TouchActiondesired_caps = {'platformName': 'Android', # 测试Android系统'platformVersion': '7.1.2', # Android版本 可以在手机的设置中关于手机查看'deviceName': '127.0.0.1:62001', # adb devices 命令查看 设置为自己的设备'automationName': 'UiAutomator2', # 自动化引擎'noReset': True, # 不要重置app的状态'fullReset': False, # 不要清理app的缓存数据'appPackage':"org.cnodejs.android.md", # 应用的包名'appActivity': ".ui.activity.MainActivity" # 应用的活动页名称}driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_capabilities=desired_caps)import time# 等待页面加载成功time.sleep(3)scrolled = 'new UiScrollable(new UiSelector().resourceId("org.cnodejs.android.md:id/recycler_view")).flingToEnd(20)'driver.find_element_by_android_uiautomator(scrolled)
