所以我通过单击菜单项出现了一个窗口。通常第一个文本框会立即获得键盘焦点,但在 UITest 中,窗口中没有任何内容获得键盘焦点(没有焦点环)。这是有问题的,因为它阻止我在文本字段中输入textField.typeText("someText")
我已经尝试.click()
在窗口和文本框上尝试给它焦点,但似乎没有任何东西可以使窗口或文本框成为焦点。任何帮助将不胜感激
例子
MainMenu().menuItemForWindow.click() // Opens window
app.windows["windowTitle"].textFields["textBoxId"].click() // Clicks but field does not gain focus
app.windows["windowTitle"].textFields["textBoxId"].typeText("SomeText") // Is not typed into the textField
作为旁注,我已经验证了我查询的所有元素确实存在。
编辑:
我已经通过字面上的垃圾邮件让它工作了,typeText()
直到它用类似的东西改变给定文本框的值
if let oldValue = textbox.value as? String {
var newValue: String? = oldValue
while newValue == oldValue {
textbox.typeText("a")
newValue = textbox.value as? String
}
//If we get here then we have edited the text box
textbox.typeText(XCUIDeleteKey) // Get rid of spam text
//TYpe what I want
//...
}
但是这种方法很老套,除了启发式方法(大约 15-30 秒)外,我真的无法暂停,所以我希望有人可以帮助解释一种更好的方法来确保专注于文本框,或者至少解释一下我是什么原来做错了。任何帮助将不胜感激。