gpt4 book ai didi

swift - XCode UITest 不会给 NSTextField 键盘焦点

转载 作者:搜寻专家 更新时间:2023-11-01 05:34:14 25 4
gpt4 key购买 nike

所以我通过单击菜单项出现了一个窗口。通常第一个文本框会立即获得键盘焦点,但在 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 秒),我真的不能暂停,所以我希望有人能帮助解释一种更好的方法来确保将注意力集中在文本框上,或者至少解释一下我原来做错了什么。任何帮助将不胜感激。

最佳答案

这里有两个可能的想法:

  1. 为您尝试与之交互的对象分配一个辅助功能 ID,并尝试通过辅助功能 ID 对其进行寻址。来自 https://blog.metova.com/guide-xcode-ui-test :

对于元素标识,还有 elementMatchingPredicate(NSPredicate) 和 elementMatchingType(XCUIElementType, identifier: String?)。

这些与 containingPredicate(NSPredicate) 和 containingType(XCUIElementType, identifier: String?) 是分开的,它们检查元素中的项目,而 elementMatching... 选项检查元素本身的值。查找正确的元素通常包括多个查询属性的组合。

  1. 在系统偏好设置中启用辅助功能 |此处描述的辅助功能:https://support.apple.com/en-us/HT204434然后发送键盘命令来设置焦点。

关于swift - XCode UITest 不会给 NSTextField 键盘焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45335132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com