首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XCTest()获取XCUIElement的父级

XCTest()获取XCUIElement的父级
EN

Stack Overflow用户
提问于 2018-01-26 21:34:09
回答 1查看 3.3K关注 0票数 4

这是我在终端窗口中输入po print(XCUIApplication().debugDescription)时尝试打印应用程序的元素结构时的示例

代码语言:javascript
复制
tables, (address code like 0x00006b), traits: (some random number)
    cells, (address code), traits: (random number)
       others, (address code), traits: (random number), label: "Other Value"
       buttons, (address code), traits: (random number), identifier: "primaryButton", label: "Press ME"

因此,基本上,如果我想访问others值,我只需要通过它的标签进行访问:

let cellsValue = XCUIApplication().tables.cells.otherElements.staticTexts["Other Value"];

但是,问题是staticTexts可以随时更改,所以我的解决方案是可以访问具有特定标识符的元素,例如:

代码语言:javascript
复制
let btnPrimary = XCUIApplication().tables.buttons["primaryBtn"];

并将其命名为父元素(本例中为cells元素),如下所示:

代码语言:javascript
复制
let tableParent = btnPrimary.parent() 

这样我就可以使用下面的代码轻松地访问该元素:

代码语言:javascript
复制
let otherElement = tableParent.otherElements.firstMatch.label

但是parent()函数并不存在,那么如何访问元素的父元素呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-28 21:13:34

我找到了这个问题的解决方案,我把它贴在这里,以防有人像我一样有同样的问题。因此,您不必根据具有唯一标识符的子元素来查找父元素,只需根据XCTest()提供的内容来查找具有唯一标识符的元素即可。所以基本上,你必须这样做:

代码语言:javascript
复制
let parent = XCUIApplication().tables.cell.containing(.button, "primaryButton")

并通过以下方式访问他们的孩子:

代码语言:javascript
复制
let otherValue = parent.otherElements.firstMatch()

它将返回第一个类型为other的元素,如果要访问元素索引,则调用element(boundBy: )方法!

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

https://stackoverflow.com/questions/48462368

复制
相关文章

相似问题

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