4

我正在尝试使用 UI 自动化来自动化键盘输入。

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'

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

任何人都知道这是一个错误还是我错过了什么?

4

3 回答 3

2

这可能会有所帮助:

var vKeyboard = target.frontMostApp().keyboard();
vKeyboard.setInterKeyDelay(0.1);
vKeyboard.typeString("INTERCOM");

默认情况下,此延迟设置为 0.03 秒。这不足以让您的应用程序更新键盘上的键。增加确定 typeString 键盘方法的键之间的超时时间将对您有所帮助。UIAKeyboard 参考页上没有关于 setInterKeyDelay 的描述,但此方法可用于 UIAKeyboard。我也不确定其他语言。我不知道 typeString 是否允许在其他语言上输入,但这 100% 适用于 iOS 5.x 的英文键盘。

于 2012-08-23T12:01:54.190 回答
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");
}
于 2012-06-13T13:41:56.897 回答
-1

我也遇到过这个问题,我相信这是字符串输入太快的情况。

似乎键的名称会根据换档按钮的状态而变化。如果启用换档,则该键称为“N”,如果未启用换档,则为“n”。您会注意到它是一个字符串正在输入,在输入大写字母之前点击了 shift 按钮。您的测试试图在按下“Shift”按钮之前按下“N”键。它不会影响句子的第一个字母,因为键盘为第一个字母启用了移位。

这也会影响在大写字符之后键入小写字符:可能会在 shift 按钮未按下的过程中键入小写字符。

我使用一种解决方法,即使用单独的 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/

于 2012-05-11T13:26:41.560 回答