是否可以在Webview中使用XCTest文本字段?

时间:2017-09-22 21:25:33

标签: uiwebview xctest uitest

我的应用程序中有一个webview,但我需要进行一些UI测试,但是我无法找到正确实现测试的文本字段元素。有谁有想法吗?谢谢。

2 个答案:

答案 0 :(得分:2)

您必须将HTML元素公开给Accessibility。对于文本字段,您可以这样做。

<div id="text-input">Super</div>
<input type="text" aria-labelledby="text-input" value="empty" />

您应该在辅助功能检查器中看到类似的内容 Accessibility inspector preview

这是您的测试的样子。

func testExample()
{            
    let
    textField = app.webViews.textFields["Super"]
    textField.tap()

    let before = textField.value as? String
    XCTAssertEqual(before, "empty")

    // This is strange but without this sleep typeText method doesn't work
    sleep(1)

    textField.typeText("lorem ipsum")

    let after = textField.value as? String
    XCTAssertEqual(after, "emptylorem ipsum")
}

通常,将HTML元素暴露给辅助功能是一个困难的领域。你可以找到很多例子here。您还可以查看list of supported elements。祝你好运。

答案 1 :(得分:0)

如果您在WKWebview实例的输入中具有占位符或文本值,则只需执行

let app = XCUIApplication()
...
let webViewsQuery = app.webViews
let textfield1 = webViewsQuery.textFields["account email"]
viewExists = textfield1(timeout: 1.0)
if viewExists {
    textfield1.tap()
    sleep(1) // wait for keyboard
    textfield1.typeText("populated email value")

    let textfield2 = webViewsQuery.secureTextFields["Password"] // for password input type
    textfield2.tap()
    sleep(1) // wait for keyboard
    textfield2.typeText("populated password")
}