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

image.png
对应 uiautomator 中的方法
image.png
主要就是根据定位到元素属性和使用对用的Java API进行元素定位

  1. from appium import webdriver
  2. from appium.webdriver.common.touch_action import TouchAction
  3. import time
  4. desired_caps = {
  5. 'platformName': 'Android', # 测试Android系统
  6. 'platformVersion': '7.1.2', # Android版本 可以在手机的设置中关于手机查看
  7. 'deviceName': '127.0.0.1:62001', # adb devices 命令查看 设置为自己的设备
  8. 'automationName': 'UiAutomator2', # 自动化引擎
  9. 'noReset': True, # 不要重置app的状态
  10. 'fullReset': False, # 不要清理app的缓存数据
  11. 'appPackage':"com.sina.weibo", # 应用的包名
  12. 'appActivity': ".SplashActivity" # 应用的活动页名称
  13. }
  14. driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_capabilities=desired_caps)
  15. time.sleep(6)
  16. # 点击 + 号
  17. driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.sina.weibo:id/titleSave")').click()
  18. time.sleep(1)
  19. driver.find_element_by_android_uiautomator('new UiSelector().description("写微博")').click()
  20. time.sleep(1)
  21. 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.

image.png
父元素的定位是

  1. new UiSelector().resourceId("org.cnodejs.android.md:id/toolbar")

通过调用child方法来定位子元素

  1. 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/

  1. from appium import webdriver
  2. from appium.webdriver.common.touch_action import TouchAction
  3. desired_caps = {
  4. 'platformName': 'Android', # 测试Android系统
  5. 'platformVersion': '7.1.2', # Android版本 可以在手机的设置中关于手机查看
  6. 'deviceName': '127.0.0.1:62001', # adb devices 命令查看 设置为自己的设备
  7. 'automationName': 'UiAutomator2', # 自动化引擎
  8. 'noReset': True, # 不要重置app的状态
  9. 'fullReset': False, # 不要清理app的缓存数据
  10. 'appPackage':"org.cnodejs.android.md", # 应用的包名
  11. 'appActivity': ".ui.activity.MainActivity" # 应用的活动页名称
  12. }
  13. driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_capabilities=desired_caps)
  14. import time
  15. # 等待页面加载成功
  16. time.sleep(3)
  17. scrolled = 'new UiScrollable(new UiSelector().resourceId("org.cnodejs.android.md:id/recycler_view")).flingToEnd(20)'
  18. driver.find_element_by_android_uiautomator(scrolled)