17

我的 UI 测试失败,因为测试无休止地等待,直到应用程序空闲。我看不到背景中有任何事情发生,例如加载微调器。

它只出现在一个选项卡上。所有其他选项卡都是可点击的,但在屏幕 3 上测试失败。II 在屏幕 3 上捕获测试后单击另一个选项卡,测试继续并成功完成。

有任何想法吗?

- (void)testExample
{

    XCUIElementQuery* tabBarsQuery = self.app.tabBars;

    [tabBarsQuery.buttons[@"Screen2"] tap];
    [tabBarsQuery.buttons[@"Screen3"] tap];
    [tabBarsQuery.buttons[@"Screen1"] tap];
    [tabBarsQuery.buttons[@"Screen4"] tap];

}
4

2 回答 2

9

也许您有一些动画或其他一些后台(或前台)活动,它们经常在主线程上更新您的 UI。这会导致应用程序永远不会“停顿” - 至少在此选项卡上。在我们的应用程序中,我们有带有重复选项的 UIView 动画。CPU 使用率很好,也没有消耗电池电量,但每次测试都失败了。禁用动画解决了这个问题。我找不到强制测试不等待空闲的方法,因此我们最终使用运行时参数为UI 测试目标使用#ifdef禁用动画,如下所述: https ://stackoverflow.com/a/ 33466038/168996

于 2016-06-06T09:50:21.073 回答
2
let tabBarsQuery = self.app.tabBars
let button = tabBarsQuery.buttons[@"Screen2"]

在编写 UI 测试用例时,系统需要时间使其可点击,因此我们正在为其创建谓词并等待按钮。

let predicate = NSPredicate(format: "isHittable == 1") expectation(for: 
predicate, evaluatedWith: button, handler: nil)
waitForExpectations(timeout:10, handler: nil)
button.tap()
于 2019-05-21T13:37:32.100 回答