【发布时间】:2018-03-04 13:06:44
【问题描述】:
我的应用中有一个 webview,但我需要进行一些 UI 测试,但是我无法找到文本字段元素来正确实施我的测试。有人有什么主意吗?谢谢。
【问题讨论】:
我的应用中有一个 webview,但我需要进行一些 UI 测试,但是我无法找到文本字段元素来正确实施我的测试。有人有什么主意吗?谢谢。
【问题讨论】:
如果你在 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")
}
【讨论】:
您必须将您的 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 元素暴露给辅助功能是一个困难的领域。你可以找到很多例子here。您也可以查看list of supported elements。祝你好运。
【讨论】:
app.webViews.textFields["Super"]. 中找不到