1

我的应用程序中有一个 webview,但我需要做一些 UI 测试,但是我无法找到文本字段元素来正确实施我的测试。有人有什么主意吗?谢谢你。

4

2 回答 2

3

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

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

您应该在可访问性检查器中看到类似的内容 辅助功能检查器预览

这就是您的测试的样子。

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 元素暴露给 Accessibility 是一个困难的领域。你可以在这里找到很多例子。您还可以查看支持的元素列表。祝你好运。

于 2017-10-05T19:48:53.107 回答
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")
}
于 2019-07-05T10:05:42.597 回答