【问题标题】:swipeUp() on XCUIApplication breaks the XCUIApplication in UITestXCUIApplication 上的 swipeUp() 破坏了 UITest 中的 XCUIApplication
【发布时间】:2017-02-08 23:13:21
【问题描述】:

我们有一个测试,我们需要swipeUp 才能看到tableView 内的单元格。在swipeUp 之后,我们无法打印出app.tables。如果我们不刷卡,一切都会按预期工作。

  • 那么与这里的 Swift 2 相比,Swift 3 发生了什么变化?
  • 我们如何解决这个问题?

例子:

func testSomethingInApp() {
   let app = XCUIApplication()
   app.launch()
   app.swipeUp() //after this we cant get app.tables anymore. Befor everything is fine
   XCTAssertEqual(app.tables.cells.elementBoundByIndex(5), "something") //something like this
}

【问题讨论】:

  • 控制台的错误输出是什么?有调试日志吗?
  • 遗憾的是,您在 assambler 代码中没有其他信息。在swipeUp() 之后你甚至不能po app.tables。它将以 assambler 代码结束。
  • 您能否确认滑动手势消息应该通过appapp.tables 发送?
  • 而不是 app.swipe(),您是否尝试过使用 app.table["tour table"].swipeUp 之类的元素或当时使用任何可见元素进行滑动?
  • 是的,我试过 app.tables.element(boundBy: 0).swipeUp() 导致同样的错误。

标签: ios swift swift3 xctest


【解决方案1】:

尝试直接访问您的元素...app.staticText["something"]

当我编写 UITests 时,我遇到了一些类似的问题。 我搜索了元素,设置了断点并读取了输出。

使用po app 命令在控制台中打印app



读取输出,搜索你想要的元素,查看它的类型(如果是静态文本、按钮、其他元素等等……)



看到所有可用的元素都显示在输出中。 输出中每一行的第一个单词是每个元素的类型。

在您的代码中,使用以下方式访问类型:app.buttons 访问按钮,app.staticTexts 访问标签等...

JLU

【讨论】:

  • 我做到了。如前所述,每当我在任何元素上滑动时,表格视图都不再存在。如果我采用与app 不同的元素并不重要。因此,即使我在其他地方滑动,也无法再访问 tableview。
【解决方案2】:

Xcode 9 和 Swift 4.0 确实解决了这个问题。 app.swipeUp() 不再清除 tableview 查询的元素。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-14
    • 1970-01-01
    相关资源
    最近更新 更多