我设置了启动参数以清除用户默认值并在测试之间注销,但是,有一半的时间这似乎不起作用。我一直在寻找可能是根本原因的错误,但同时我希望减少不稳定的测试,以便开发人员对它们更有信心。因此,我在登录步骤周围添加了一个条件,该条件仅应在登录按钮存在时执行。运行测试时,就像 if 语句被完全忽略一样,测试会寻找登录按钮,然后在找不到时失败。
代码:
func login() {
app.buttons["Have an account? Log in"].tap()
let emailAddressTextField = app.textFields["Email Address"]
let passwordSecureTextField = app.secureTextFields["Password"]
emailAddressTextField.tap()
emailAddressTextField.typeText(EMAIL_ALPHA_USER)
passwordSecureTextField.tap()
passwordSecureTextField.typeText(PASSWORD)
if app.staticTexts["Success!"].waitForExistence(timeout: 5) {
app.buttons["OK"].tap()
}
}
func testTapControlMode() {
if app.buttons["Have and Account?"].exists {
login()
}
// ... proceed with test
}
我没有得到什么?我试过使用.isHittable
,也不管用。我在测试中放置了断点并打印了结果,app.buttons["name"].exists
它返回 false 而.isHittable
返回一些错误。所以看起来.exists
这里应该做我所期望的。