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 が他の言語で入力できるかどうかはわかりませんが、これは iOS 5.x の英語キーボードで 100% 機能します。

于 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' ボタンが押される前に 'N' キーを押そうとしています. それはあなたの文の最初の文字には影響しません.キーボードは、最初の文字のシフトが有効になっています。

これは、大文字の後に小文字を入力する場合にも影響します。小文字は、シフト ボタンが押されていないときに入力される可能性があります。

文字列の各文字を個別の typeString() メソッドで入力するという回避策を使用します。

for (i = 0; i < title.length; i++)
{
    var strChar = title.charAt(i);
    target.frontMostApp().keyboard().typeString(strChar);
}

これの欠点は、文字列全体を入力するのに時間がかかることです。

同様のソリューションを提供する次のリンクを参照することもできますが、typeString() メソッドの代わりに文字列の各文字に対して app.keyboard().keys().tap() メソッドを使用します。 http://jojitsoriano.wordpress.com/2011/06/27/ios-ui-automation-typing-a-string-in-a-uiatextfield/

于 2012-05-11T13:26:41.560 に答える