【问题标题】:How to findObject in UiAutomator using position on screen (bounds)如何使用屏幕上的位置(边界)在 UiAutomator 中查找对象
【发布时间】:2015-06-20 16:41:48
【问题描述】:

我想使用 device.findObject() 在我的屏幕中查找一个对象,这需要一个 UiSelector。到目前为止一切顺利。

问题是我有几个项目只能通过它们在屏幕上的位置来区分,例如,在消息传递应用程序中,所有头像都具有相同的属性,除了它们在屏幕上的位置。

如何指定?

我想到了:

  • 在找到对象后检查属性并在没有此对象的情况下再次进行搜索,但我也找不到任何从搜索中消除对象的方法。
  • 使用 UiCollection 获取所有可能的元素,然后一一检查哪个是正确的。问题:在UiCollection中无法使用foreach,查找元素只能使用UiSelector,问题和之前一样。

您有什么建议/解决方案吗?

谢谢。

【问题讨论】:

  • 您是否能够使用边界单击元素?我目前无法这样做。我正在使用appium_lib gem 来自动化并使用adb 命令system('adb shell input tap 43,676 265,972') 来单击坐标,但这似乎没有帮助。我想,我写命令的方式有问题,你有什么解决办法吗? @Ines
  • 我能够按照艾伦的建议使用 UiDevice.findObjects 来做到这一点,这是标记为正确的答案。至少我认为这是很久以前的事了……不过我从来没有使用过 appium。但是,我想说使用 adb shell 并不是最好的解决方案......
  • 是的!从设备到设备的界限不断变化。它在我的本地模拟器中通过,但在 CI 上失败。然后我不得不编写更长的 xpath 行,幸运的是我能够找到该元素。谢谢!

标签: android android-testing bounds uidevice android-uiautomator


【解决方案1】:

这不是一个很好的解决方案,但您可以使用UiDevice.findObjects(..) 来返回所有这些。然后使用getVisibleBounds()getVisibleCenter()查看坐标。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-31
    • 2010-09-25
    • 1970-01-01
    • 2017-02-08
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    相关资源
    最近更新 更多