当前位置:  开发笔记 > IOS > 正文

无法在Xcode UI Test中点击UIBarButtonItem

如何解决《无法在XcodeUITest中点击UIBarButtonItem》经验,为你挑选了1个好方法。

我的导航栏上有一个"添加"按钮,我需要让Xcode的UI测试点击该按钮,在它打开的视图控制器中执行测试.我以编程方式添加按钮,如下所示:

UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(showAddVC)];
self.navigationItem.rightBarButtonItem = addButton;

在我的测试中,我有:

XCUIApplication *app = [[XCUIApplication alloc] init];
XCTAssert([app.buttons[@"Add"] exists]); // <-- This passes, so the test runner does see the button.

但是当我尝试使用以下两种方式来点击它时:

// Generated using the test recorder
[app.navigationBars[@"App Title"].buttons[@"Add"] tap];

要么:

// Same expression used with the XCTAsset earlier
[app.buttons[@"Add"] tap];    

什么都没发生.点击按钮时应该执行的操作不会发生.我尝试在行sleep(5)之间添加一些内容以让应用程序加载,但这没有多大帮助.

这是测试日志:

Test Case '-[xx]' started.
    t =     0.00s     Start Test
    t =     0.00s     Set Up
2015-12-22 16:25:02.898 XCTRunner[10978:384690] Continuing to run tests in the background with task ID 1
    t =     0.94s         Launch xx
    t =     1.01s             Waiting for accessibility to load
    t =     3.45s             Wait for app to idle
    t =     9.02s     Tap "Add" Button
    t =     9.02s         Wait for app to idle
    t =    39.07s             Assertion Failure: UI Testing Failure - App failed to quiesce within 30s
xx: error: -[xx] : UI Testing Failure - App failed to quiesce within 30s

Stefan S.. 5

上述答案都不适合我.经过几个小时的奋斗之后,最终使它发挥作用的是重复敲击.试试这个:

[app.navigationBars[@"App Title"].buttons[@"Add"] tap];
[app.navigationBars[@"App Title"].buttons[@"Add"] tap];

虽然上面最初对我有用,但我发现有时第一个水龙头工作,这将导致两个水龙头.我的解决方案是在UI测试开始时点击不触发任何操作的任意UI元素,然后正常进行.我认为第一次点击适用于某些设备,或者可能在第一次UI测试运行之后.



1> Stefan S..:

上述答案都不适合我.经过几个小时的奋斗之后,最终使它发挥作用的是重复敲击.试试这个:

[app.navigationBars[@"App Title"].buttons[@"Add"] tap];
[app.navigationBars[@"App Title"].buttons[@"Add"] tap];

虽然上面最初对我有用,但我发现有时第一个水龙头工作,这将导致两个水龙头.我的解决方案是在UI测试开始时点击不触发任何操作的任意UI元素,然后正常进行.我认为第一次点击适用于某些设备,或者可能在第一次UI测试运行之后.

推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有