我正在使用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“]来简化调用。但它没有改变任何东西。
答案 0 :(得分:0)
不确定你的问题是什么......
您是否不希望测试等待项目出现?这几乎肯定会导致测试每次都失败。
您的测试时间是否超出您的预期?如果是这样的话,设置Xcode服务器并让测试在后台运行,或者当你要抓一点零食时运行它们。 (Xcode服务器不是你能用半小时设置的东西,它需要花费一点时间投入,特别是对于UI测试才能正常工作)
你想知道为什么需要这么长时间吗? UI测试总是运行缓慢,从不测量UI测试期间的应用程序性能,你会非常失望。我有一个UI测试,点击主屏幕上的按钮,验证出现一个关于屏幕,点击完成按钮,并验证关于屏幕消失。作为一个人,我可以在点击图标后大约7秒内完成测试,UI测试需要18秒才能完成测试。