gpt4 book ai didi

ios - 如何为 UITableView 中的最后一个 UITableViewCell 创建 XCUIElement 查询?

转载 作者:行者123 更新时间:2023-11-28 10:27:21 25 4
gpt4 key购买 nike

我正在创建一个 XCTestCase。对于其中一种测试方法,将其称为 func testConfirmLastCellContent() { ... },我想确认是否存在值为 staticText 子元素>"98765"UITableViewCell 中(我将文本值放在 TableView 单元格的 textLabel.text 属性中)。此单元格上方列出了 4 个表格 View 单元格。它们每个的 textLabel.text 都有一个 String"12345",除了第二个单元格,它具有相同的文本值作为最后一个:"98765"

然后,每个单元格的 textLabel.text 属性的 String 值如下所示:

  • “12345”
  • “98765”
  • “12345”
  • “12345”
  • “98765”

这些 textLabel.text 值分别是表格 View 单元格中的唯一视觉子元素。

如果我像这样创建一个简单的XCUIElementQuery...

let staticTextForLastCell = XCUIApplication().staticTexts["98765"]

...并像这样断言其存在为 true...

XCTAssert(staticTextForLastCell.exists == true)

...然后测试将通过,但我怎么知道我得到了最后一个单元格?显然,我无法从该查询中得知,因为它可能是从第二个单元格中提取的。

到目前为止,我找不到一个 XCTest 类/方法来专门获取最后一个 UITableViewCell 并查询其详细信息。

我的目标是获取最后一个单元格并确认其 textLabel.text 值符合我的预期。我该怎么做?

注意:我无法在任何表格 View 单元格上添加/减去/更改文本、视觉等元素。

编辑:

我还应该注意,UITableViewCell 是由被测试的应用程序动态生成的。因此,我无法标记它们或填充textLabel 或单元格的accessibilityIdentifier 属性。

我的设置如下:

  • 操作系统:macOS Mojave 10.14.6
  • IDE:Xcode 10.3
  • SDK:iOS 12.4 SDK
  • 部署目标:iOS 12.0
  • 语言:Swift 5

最佳答案

您可能应该向 XCUIElementQuery 添加一个扩展

extension XCUIElementQuery {
var lastMatch : XCUIElement {return self.element(boundBy: self.count - 1)}
}

然后你可以像这样断言你的单元格:

XCTAssertEqual(app.cells.lastMatch.staticTexts.element.label, 
"98765",
"Unexpected text of the last cell")

关于ios - 如何为 UITableView 中的最后一个 UITableViewCell 创建 XCUIElement 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58288533/

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