XCode UI Test在成功之前尝试多次查找元素

时间:2016-08-24 18:53:06

标签: xcode macos xcode-ui-testing

我正在使用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次循环中取得了成功。

Screenshot of test output

我尝试重新编写代码而不调用“waitForUIElementToAppear(...)”,我尝试通过简单地说“copyDirectLink = app.menuItems [”Copy Direct Link“]来简化调用。但它没有改变任何东西。

1 个答案:

答案 0 :(得分:0)

不确定你的问题是什么......

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

您的测试时间是否超出您的预期?如果是这样的话,设置Xcode服务器并让测试在后台运行,或者当你要抓一点零食时运行它们。 (Xcode服务器不是你能用半小时设置的东西,它需要花费一点时间投入,特别是对于UI测试才能正常工作)

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