使用 XCUITEST 驱动程序在 Appium 中通过 xpath 查找元素

Finding elements by xpath in Appium using XCUITEST driver

更新自动化框架的任务落在了我身上。我是 iOS 测试的新手,所以我在使用 Appium-1.6.0-beta1 中的新 XCUITEST 驱动程序时遇到了问题。

我已经启动了驱动程序并且 运行,但是大多数元素都是使用框架中的 xpaths 定位的(我知道一点也不理想)大多数元素没有标签、名称或可访问性标签。因此,目前 90% 的元素都排除了 :name 定位器。

xpath 似乎适合旧的 apple 框架 (UIAutomation),如下所示:

//UIAApplication[1]/UIAWindow[4]/UIAAlert[1]

我试过这样的事情:

//XCUIApplication[1]/XCUIElementTypeWindow[4]/XCUIElementTypeAlert[1]

这些被传递到 driver.find_element(:xpath, xpath_value) 没有运气。我似乎找不到任何关于此的文档,并且在 appium 讨论论坛上取得的成功微乎其微。

任何人都可以指出一个工作示例或文档吗?有更好的方法吗?

任何输入都会很有帮助!

谢谢, 彼得

并非所有 XCUI 元素都是从 UIAutomator 直接传输的。我一直使用的方法是 运行 没有你需要的 xpath 的测试,当你打开你想要的屏幕时:

System.out.println(driver.getPageSource());

然后就是阅读XML得到想要的东西了。繁琐得多,但在 1.6BetaX 中没有 appium 检查器,这是我知道如何获取 XCUI 层次结构的唯一方法。

只需很少的解决方法,您就可以使用旧的图形化 appium 查找视图元素的 xpath,以便与 Appium v​​1.6 一起使用按照此 link 中的步骤 1: The good old Appium inspector, with a bit workaround

JaysonP 的上述回答工作正常,但仍有一种方法可以使用 appium 检查器。

  1. 运行 您正在使用的 appium (appium 1.6.x ) 来自 terminal/command 行
  2. 打开 appium GUI 应用程序但不要运行它
  3. 在 GUI 中,提供应用程序路径
  4. 确保 GUI 版本和您 运行 在终端上使用的版本使用相同的端口。再次不要从 GUI 启动 appium
  5. 在不启动 appium 的情况下单击 Inspector 按钮
  6. Inspector window应该打开了,你可以使用你之前一直使用的方式