target.frontMostApp()。键盘()无法找到键'N'

时间:2012-05-11 09:45:04

标签: ios-ui-automation

我正在尝试使用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'

我有一个本地化的瑞典语键盘。

有人知道这是一个我错过的错误吗?

3 个答案:

答案 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/