我正在尝试使用UI Automation自动键盘输入。
target.frontMostApp().keyboard().typeString("INTERCOM")
但是首先输入'I'后我会收到此错误
target.frontMostApp().keyboard() failed to locate key 'N'
Script threw an uncaught JavaScript error: target.frontMostApp().keyboard() failed to locate key 'N'
我有一个本地化的瑞典语键盘。
有人知道这是一个我错过的错误吗?
答案 0 :(得分:2)
这可能会有所帮助:
var vKeyboard = target.frontMostApp().keyboard();
vKeyboard.setInterKeyDelay(0.1);
vKeyboard.typeString("INTERCOM");
默认情况下,此延迟设置为0.03秒。这不足以让您的应用程序更新键盘上的按键。在确定typeString键盘方法的键之间增加此超时将对您有所帮助。 UIAKeyboard参考页面上没有setInterKeyDelay的描述,但此方法可用于UIAKeyboard。 我也不确定其他语言。我不知道typeString是否允许在其他语言上键入,但这100%适用于iOS 5.x的英文键盘。
答案 1 :(得分:1)
try{
target.delay(1);
target.frontMostApp().mainWindow().textFields()[0].tap();
target.delay(1);
target.frontMostApp().mainWindow().textFields()[0].setValue("INTERCOM");
}
catch(err){
target.delay(1);
target.frontMostApp().mainWindow().scrollViews()[0].textFields()[0].tap();
target.delay(1);
target.frontMostApp().mainWindow().scrollViews()[0].textFields()[0].setValue("INTERCOM");
}
答案 2 :(得分:-1)
我也遇到过这个问题,我相信这是一个字符串键入太快的情况。
似乎键的名称会根据移位按钮的状态而改变。如果启用了移位,则键被称为“N”,如果未启用shift,那么它就是'n'。您会注意到在键入字符串时,在键入大写字母之前点按shift键。您的测试是在按下“Shift”按钮之前尝试按“N”键。它不会影响第一个字母。你的句子,因为键盘已为第一个字母启用了移位。
这也会影响在大写字符后键入小写字符:在移位按钮处于未按下状态时,可以键入小写字符。
我使用一种解决方法,用单独的typeString()方法键入字符串的每个字母。
for (i = 0; i < title.length; i++)
{
var strChar = title.charAt(i);
target.frontMostApp().keyboard().typeString(strChar);
}
这样做的缺点是输入完整的字符串需要更长的时间。
您可能还想查看以下提供类似解决方案的链接,但对字符串的每个字符使用app.keyboard()。keys()。tap()方法而不是typeString()方法。 http://jojitsoriano.wordpress.com/2011/06/27/ios-ui-automation-typing-a-string-in-a-uiatextfield/