ios - 了解 Appium 的 iOS uiautomation 选择器策略的基础知识

标签 ios iphone appium ios-ui-automation

我正在使用 Appium 为 iOS 原生应用程序编写 UI 自动化测试,并逐渐意识到大多数元素定位策略如何不能可靠地适用于 iOS。

除了随机工作的 XPath,我还有其他选择:

  • 辅助功能 ID(对我不起作用)
  • 名称(并非每个元素都具有“名称”属性的值)
  • 类(在处理元素列表时有意义)
  • iOS UiAutomation 谓词(适合初学者的陡峭学习曲线)

我一直在尝试了解如何使用 iOS UiAutomation 定位器策略 并使用它查找元素,但它不适用于 Appium Inspector。我引用了这些文档(Appium iOS Predicate referenceApple UIAutomation reference),但我觉得它们适合对 iOS 开发有一定了解的高级 Appium 用户,而不适合初学者。

目前我试图在其中查找元素的元素层次结构是这样的:
Part 1 of element hierarchy Part 2 of element hierarchy


我当前的自动化设置是:

  • XCode 6.3.2
  • Appium 1.4.8
  • iOS 8.3
  • Appium Java 客户端 3.1.0



我可以使用什么定位器来使用 UiAutomation 谓词策略定位突出显示的元素?我一直在 Appium Inspector 上尝试一些选项,例如:

  • applications()[0].windows()[0].navigationBars()[0].textFields().withPredicate("value == 'Search eBay'")
  • .textFields().withPredicate("value == 'Search eBay'")


这些都没有用。我在这里做错了什么?是否有任何其他文档可以从头开始清楚地解释 iOS UiAutomation 定位器?如果有人能解释这些基础知识,那将非常有帮助。

最佳答案

我以前从未使用过 Appium,但我使用过 JavaScript 中的 UIAutomation。

您可能可以使用以下方法找到该元素:

....textFields().firstWithName("Search eBay")

请注意,UIAuatomation 使用 UIAccessibility协议(protocol)。 UITextFieldvalue 是它的accessibilityValue,那个值等于搜索到的文本,而不是占位符。在字段中键入内容后,您将能够使用 value

当然,在您的情况下,捕获第一个文本字段也可以,因为导航栏中只有一个。

关于ios - 了解 Appium 的 iOS uiautomation 选择器策略的基础知识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31715877/

相关文章:

iphone - 如何在 iPhone 应用程序的 UINavigationBar 中添加图像

iphone - 我们可以通过蓝牙将多少台设备与 iPhone 配对?

iphone - Ipad 2 是否足以调试 Iphone/Ipad 应用程序?

java - 将 galen 与 appium 集成并获取 org.openqa.selenium.WebDriverException : Method is not implemented

android - 如何使用 webdriver 处理 appium 中的弹出窗口

ios - 刷新 PFInstallation.currentInstallation() 时出错

ios - iPad Pro 报告错误的屏幕比例

ios - Firebase - for 循环 Swift 中嵌套的 observeSingleEvent 方法

c# - IWebDriver 对象必须实现或包装实现 IHasTouchScreen 的驱动程序。参数名称 : driver

ios - UILabel 显示错误