【问题标题】:XCode UI Test tries many times to find element before succeedingXCode UI Test 在成功之前多次尝试查找元素
【发布时间】:2016-08-24 18:53:05
【问题描述】:

我正在使用 XCTest 框架运行 UI 测试。

除了在我的一些测试中 XCTest 必须尝试很多次 次才能成功找到它正在寻找的 UIElement 之外,一切都运行良好。它似乎特别发生在从表格视图单元格中的按钮生成的菜单中包含的菜单项中。

这是我的一个具有这种行为的测试的代码。

func testMoreMenuCopyDirectLinkAction()
{
    //Arrange
    CloudPasteboardController.clearClipboard()
    XCTAssertTrue(CloudPasteboardController.getPasteboardItems().count == 0)
    let app = XCUIApplication()
    let firstCell = app.tables.cells.elementBoundByIndex(0)
    let moreMenu = firstCell.menus.elementBoundByIndex(0)
    let copyDirectLink = moreMenu.menuItems.elementMatchingType(.MenuItem, identifier: "Copy Direct Link")

    //Act
    openApp()
    findAndClickCellButtonWithName("More Button")
    waitForUIElementToAppear(copyDirectLink)
    copyDirectLink.click()

    //Assert
    XCTAssertTrue(CloudPasteboardController.getPasteboardItems().count == 1)
}

这是部分输出的屏幕截图。可以看出,它多次尝试在某种循环中查找元素。总而言之,在这个测试中,它在第 11 个循环中成功了。

我尝试在不调用“waitForUIElementToAppear(...)”的情况下重新编写代码,并且尝试通过说“copyDirectLink = app.menuItems[“Copy Direct Link”]”来简化调用但它不会改变任何东西。

【问题讨论】:

  • 它在我看来像是循环播放。也许它正在等待它出现或其他什么。

标签: xcode macos xcode-ui-testing


【解决方案1】:

不确定您的问题是什么……

您不希望测试等待项目出现吗?这几乎肯定会导致每次测试都失败。

您的测试花费的时间是否超出您的预期?如果是这样,请设置 Xcode 服务器并让测试在后台运行,或者在您要吃零食或其他东西时运行它们。 (Xcode 服务器不是一个半小时就能搞定的东西,需要一些时间投入,尤其是 UI 测试才能正常工作)

你想知道为什么需要这么长时间吗? UI 测试总是运行缓慢,永远不要在 UI 测试期间测量应用程序的性能,你会非常失望。我有一个 UI 测试,它点击主屏幕上的一个按钮,验证一个关于屏幕的出现,点击完成按钮,并验证关于屏幕消失。作为一个我可以在点击图标后大约 7 秒内完成测试的人,UI 测试需要 18 秒来完成测试。

【讨论】:

  • 最好在 cmets 中要求澄清,然后发布明确的答案
猜你喜欢
  • 1970-01-01
  • 2021-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-24
  • 1970-01-01
  • 2017-01-26
相关资源
最近更新 更多