gpt4 book ai didi

xcode - 如何找出(使用 XCTest UITest)在 tvOS AppleTV 的表格 View 中具有焦点的单元格?

转载 作者:行者123 更新时间:2023-11-28 06:42:49 29 4
gpt4 key购买 nike

我正在尝试在 Apple TV (tvOS) 上自动执行应用程序的 UI 测试。

在登录屏幕上,我选择“输入用户名”字段。然后出现以前使用过的登录屏幕。在屏幕上,我想选择“全部清除”单元格。

澄清一下:“以前使用过”菜单似乎内置于 tvOS 中,只要有人在登录菜单中选择用户名文本字段,它就会自动出现。我不确定,所以我仍然需要确认该信息。

enter image description here

所以我认为像这样的代码将是一个解决方案:

    if self.app.staticTexts["Previously Used"].exists {

let clearAllCell = self.app.cells.staticTexts["Clear All"]

while clearAllCell.hasFocus == false {
XCUIRemote.sharedRemote().pressButton(.Down)
sleep(1)
}

XCUIRemote.sharedRemote().pressButton(.Select)
}

然而即使在这样的状态下:

enter image description here

单元格的属性 hasFocusselected 似乎返回 false:

po self.app.cells.staticTexts["Clear All"].hasFocus
po self.app.cells.staticTexts["Clear All"].selected

enter image description here

如何找到处于“聚焦状态”的“全部清除”单元格?

更新:

我尝试了@Oletha 提出的解决方案,但没有成功。不幸的是,clearAllCell.hasFocus 似乎总是返回 false。

    if self.app.staticTexts["Previously Used"].exists {

let clearAllCell = self.app.cells.staticTexts["Clear All"]

let predicateHasFocus = NSPredicate(format: "exists == true", argumentArray: nil)

expectationForPredicate(predicateHasFocus, evaluatedWithObject: clearAllCell, handler: { () -> Bool in
if clearAllCell.hasFocus {
return true
} else {
sleep(1)
XCUIRemote.sharedRemote().pressButton(.Down)
return false
}
})

waitForExpectationsWithTimeout(10, handler: nil)

XCUIRemote.sharedRemote().pressButton(.Select)
}

更新:

目前一个不优雅的解决方案是:

    if self.app.staticTexts["Previously Used"].exists {
var cellsCount = self.app.cells.count

// Select Clear All menu button, hack as it was not possible to detect "Clear All" cell in another way
while cellsCount > 0 {
sleep(1)
XCUIRemote.sharedRemote().pressButton(.Down)
cellsCount -= 1
}

sleep(1)
XCUIRemote.sharedRemote().pressButton(.Up)
sleep(1)
XCUIRemote.sharedRemote().pressButton(.Select)
}

最佳答案

我的应用程序遇到了类似的问题,发现 2 个有助于编写运行 UI 测试的东西:

  1. 总是在每次按下远程按钮后延迟 1 秒,因为断言评估通常比焦点更改快,因此返回 false

    XCUIRemote.sharedRemote().pressButton(.Down)
    sleep(1)
  2. 查找焦点元素的确切 UI 层次结构位置。例如,print(XCUIApplication().debugDescription) 将为您提供详细的 UI 树,并使您可以轻松地正确访问您的元素。

enter image description here

此断言已返回 true:

    XCTAssert(XCUIApplication().tabBars.buttons["Home"].hasFocus)

关于xcode - 如何找出(使用 XCTest UITest)在 tvOS AppleTV 的表格 View 中具有焦点的单元格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37466762/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com