Apa*_*pan 16 uitextfield xctest ios9 xcode-ui-testing
我有一个如下测试:
let navnTextField = app.textFields["First Name"]
let name = "Henrik"
navnTextField.tap()
navnTextField.typeText("Henrik")
XCTAssertEqual(navnTextField.value as? String, name)
Run Code Online (Sandbox Code Playgroud)
问题是,默认情况下iPhone Simulator
,由于系统设置,我有波兰语键盘,"Henrik"会自动更改为"ha".
简单的解决方案是从中删除波兰语键盘iOS Settings
.然而,该解决方案没有解决问题,因为iPhone Simulator
可以重置然后测试将再次失败.
有没有办法在测试用例之前设置自动更正或以其他方式将文本输入到文本字段.
mik*_*ike 21
这是XCUIElement上的一个小扩展来实现这一目标
extension XCUIElement {
// The following is a workaround for inputting text in the
//simulator when the keyboard is hidden
func setText(text: String, application: XCUIApplication) {
UIPasteboard.generalPasteboard().string = text
doubleTap()
application.menuItems["Paste"].tap()
}
}
Run Code Online (Sandbox Code Playgroud)
它可以像这样使用
let app = XCUIApplication()
let enterNameTextField = app.otherElements.textFields["Enter Name"]
enterNameTextField.tap()
enterNameTextField.setText("John Doe", app)
Run Code Online (Sandbox Code Playgroud)
Apa*_*pan 12
有一种解决方法可以使用UIPasteboard提供输入文本:
let navnTextField = app.textFields["First name"]
navnTextField.tap()
UIPasteboard.generalPasteboard().string = "Henrik"
navnTextField.doubleTap()
app.menuItems.elementBoundByIndex(0).tap()
XCTAssertEqual(navnTextField.value as? String, name)
Run Code Online (Sandbox Code Playgroud)
您可以检查链接与说明作为GM中安全输入的变通方法
编辑
为了更好的可读性,app.menuItems.elementBoundByIndex(0).tap()
你可以做到app.menuItems["Paste"].tap()
.
当前在Xcode 10上使用Swift 4,您现在可以typeText(String)
像这样
使用
let app = XCUIApplication()
let usernameTextField = app.textFields["Username"]
usernameTextField.typeText("Caseyp")
归档时间: |
|
查看次数: |
15287 次 |
最近记录: |