如下图: 内容首页为可滚动视图,默认元素定位获取的到的是当前显示页面节点的内容,如果要获取的内容不在当前页面上,则需要向下滑动页面视图才能找到对应元素。但是你不知道要滑动多少次才能定位到这个元素。

image.png

在 Android UiAutomator 元素的定位中,提供scrollIntoView的方法来定位,具体使用如下

  1. """
  2. 视图滚动
  3. """
  4. from appium import webdriver
  5. caps = {}
  6. caps["platformName"] = "Android"
  7. caps["platformVersion"] = "5" # 设备的版本号 输入自己的设备版本号
  8. caps["deviceName"] = "127.0.0.1:21503" # 设备的序列号 输入自己的设备序列号
  9. caps["automationName"] = "UiAutomator2"
  10. driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", caps) # 连接appium 远程服务
  11. # 全局等待时间30秒 如果元素没有立即显示出来,会重试
  12. driver.implicitly_wait(30)
  13. # 启动应用 pacakage activity
  14. driver.start_activity('org.cnodejs.android.md','.ui.activity.LaunchActivity')
  15. # 找到我还是从前那个少年元素
  16. driver.find_element_by_android_uiautomator(
  17. 'new UiScrollable(new UiSelector().scrollable(true).instance(0)).scrollIntoView(new UiSelector().text("我还是从前那个少年").instance(0));')

参考

http://appium.io/docs/en/writing-running-appium/android/uiautomator-uiselector/index.html