使用XCode 7 UITest测试元素是否可见

Mat*_*oal 29 xcode ui-testing swift xcode-ui-testing

我想验证一个元素是否可见取决于它的.hidden属性,但我找不到使用新的Xcode 7 UI测试的有效方法.

我试过了myelement.exists,myelement.hittable但它们似乎没有像我预期的那样工作.我想他们与hidden财产合作.隐藏的元素不应该存在且不可命中......但这不是当前的行为(我可以理解exists行为......但隐藏的元素应该是不可命中的IMO).

还有另一种方法来验证"隐藏"的财产价值吗?

Joe*_*tti 29

从Xcode 7.1 Beta 3开始,UI测试目前不支持验证元素的可见性.我建议备案雷达给苹果带来必要的关注.

Xcode 7.1解决了这个问题.hittable现在检查元素是否正确.

  • 这在Xcode 7.1上对我不起作用.我将一些控件更新为动态隐藏并在之后进行测试,这总是返回true,即使控件显然是隐藏的. (2认同)

Ohm*_*hmy 9

1)我正在使用Xcode 7.3中的swift测试UI,我使用.hittable和.exists来测试标签是否隐藏,它们都有效.我测试'true'和'false'以确保两种方式都符合结果.

我有一个标签,其静态文本是"Track Info"并设置为在首次加载app时隐藏,然后我按下按钮显示标签,这是显示标签后的结果.

//测试失败

let trackInfoLabel = app.staticTexts["Track info"]
XCTAssertEqual(trackInfoLabel.exists, true)

XCTAssertEqual(trackInfoLabel.hittable, true)
Run Code Online (Sandbox Code Playgroud)

//测试通过

XCTAssertEqual(trackInfoLabel.exists, false)
XCTAssertEqual(trackInfoLabel.hittable, false)
Run Code Online (Sandbox Code Playgroud)

//测试通过

let trackInfoLabel = app.staticTexts["Track Info"]
XCTAssertEqual(trackInfoLabel.exists, true)

XCTAssertEqual(trackInfoLabel.hittable, true)
Run Code Online (Sandbox Code Playgroud)

//测试失败

XCTAssertEqual(trackInfoLabel.exists, false)
XCTAssertEqual(trackInfoLabel.hittable, false)
Run Code Online (Sandbox Code Playgroud)

当我按下按钮隐藏标签时,所有结果都反过来了.这确认了两个属性(hittable和exists)适用于label.hidden设置.

2)找出元素是否隐藏的另一种方法是,你可以做的是element.frame.size.width == 0 || element.frame.size.height == 0