XCTest()获取XCUIElement的父级

时间:2018-01-26 13:34:09

标签: swift automation automated-tests xctest

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

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可以超时更改,所以我的解决方案是我可以访问具有特定标识符的元素,如:

let btnPrimary = XCUIApplication().tables.buttons["primaryBtn"];

并调用它的父(在本例中为cells元素),如:

let tableParent = btnPrimary.parent() 

这样我就可以使用它轻松访问该元素:

let otherElement = tableParent.otherElements.firstMatch.label

parent()函数不存在,那么如何才能访问元素的父元素?

1 个答案:

答案 0 :(得分:2)

我找到了解决这个问题的方法,如果有人遇到像我这样的问题,我会在这里发布。因此,您不必根据具有唯一标识符的子项找到父项,您只需要找到一个具有该XCTest()给出的唯一标识符的元素。所以基本上,你必须这样做:

let parent = XCUIApplication().tables.cell.containing(.button, "primaryButton")

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

let otherValue = parent.otherElements.firstMatch()

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