首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择XCUIElement的父级

选择XCUIElement的父级
EN

Stack Overflow用户
提问于 2022-05-17 07:57:57
回答 1查看 306关注 0票数 2

如何在XCUIElement中选择XCUITest的父元素?根据文档的说法,这个班有children()descendants(),但是没有选择父母或兄弟姐妹的东西。在我看来,我一定是遗漏了什么--如果没有双向导航,苹果怎么能拥有一个元素树呢?

我知道containing()XCUIElementQuery上有一种方法,但这是不一样的。我还知道accessibilityIdentifier可能会有所帮助,但我正在考虑编写一个通用方法,用于使用给定的Navbar标签测试任何视图。传递我想访问的所有元素的所有标识符似乎不是一个好的选择。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-17 10:57:08

不幸的是,没有直接命名的方法来访问类似于苹果提供的children()descendants()的父元素,但实际上您在containing()方面走的是正确的道路。当我需要根据子/后代定位父元素时,通常有两种方法来处理它:

  1. 使用containing(_:identifier:) let parentElement = app.otherElements.containing(.textField, identifier: "test").firstMatchlet parentElement = app.otherElements.containing(.textField, identifier: "test").element(boundBy: 0)
  2. 使用containing(_ predicate: NSPredicate) let parentElement = app.otherElements.containing(NSPredicate(format: "label CONTAINS[c] 'test'").firstMatchlet parentElement = app.otherElements.containing(NSPredicate(format: "label CONTAINS[c] 'test'").element(boundBy: 0)

这些只是随机数据/元素类型的示例,因为您没有确切地提到您想要实现的目标,但是您可以从那里开始。

更新:

和往常一样,苹果的文档服务也不太好。他们说“后代”,但实际上他们的意思是直系后代(子女)和非直系后裔(后裔)。不幸的是,没有任何保证,也没有通用的解决方案。它应该基于您当前的需求和应用程序实现。更多可能有用的例子:

  1. 如果不希望查询中的第一个元素,最好使用element(boundBy: index)。因此,如果您知道XCUIElementQuery会给您提供5个元素,并且您知道您需要第三个元素: let parentElement = app.otherElements.containing(.textField, identifier: "test").element(boundBy: 2)
  2. 细粒度的元素定位器。假设您有3个带有标识符"SomeView“的视图,这3个视图每个包含两个其他子视图,子视图有一个带有标识符"SomeButton”的按钮。
代码语言:javascript
复制
let parentViews = app.otherElements.matching(identifier: "SomeView")
let subView = parentViews.element(boundBy: 2).otherElements.containing(.button, identifier: "SomeButton").element(boundBy: 1)

这将为您提供第二个子视图,其中包含一个带有标识符"SomeButton“的按钮,该按钮来自带有标识符"SomeView”的第三个父视图。使用这种方法,你可以微调,直到你完全得到你所需要的,而不是所有的父母,祖父母,曾祖父母等。

我希望苹果为带有XCTest的定位器提供更多的灵活性,就像Xpath那样,但是大多数情况下,即使这些工具也是足够的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72270184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档