如何在 iOS 上的 UI 测试中测试导航栏按钮是否为 enabled/disabled?

How to test if navigationBar button is enabled/disabled in UI test on iOS?

在我的 iOS 应用程序中,我添加了 UI 测试,我需要在其中检查 navigationBar 按钮是否在不同的时间点 enabled/disabled。

目前我正在使用:

XCUIElement* saveButton = self.app.navigationBars[@"TSSIDAddCardView"].buttons[@"Save"];


XCTAssertEqual(saveButton.hittable, YES);

然而,这总是returns YES。 .exists 测试 returns 也是。

有人知道如何进行正确的测试吗?

您可以通过 value 属性.

获取实际的 UI 组件

通过它您可以检查它是否已启用。

类似于:

UIBarButtonItem *saveButton = self.app.navigationBars[@"TSSIDAddCardView"].buttons[@"Save"].value;
XCTAssertTrue(saveButton.enabled);

所以在@InsertWittyName 的帮助下我找到了解决方案:

UIBarButtonItem *saveButton = self.app.navigationBars[@"TSSIDAddCardView"].buttons[@"Save"];
XCTAssertFalse(saveButton.enabled);

XCUIElement conforms to XCUIElementAttributes, which provides @property(readonly, getter=isEnabled) BOOL enabled;.

所以您可以在 XCUIElement* saveButton:

上执行此操作

Objective-C

XCTAssertEqual(saveButton.enabled, YES);

Swift

XCTAssertEqual(saveButton.isEnabled, true)