6

UI Automation を使用して iOS UI をテストしたいだけですが、UITextFields にテキストを入力するときに行き詰まりました。ドキュメントには、メソッド「setValue(...)」がうまくいくはずだと書かれていますが、そうではありません。

私はいつもこのエラーを受け取ります:

Script threw an uncaught JavaScript error: Unexpected error in -[UIATextField_0x9952690 setValue:], /SourceCache/UIAutomation_Sim/UIAutomation-271/Framework/UIAElement.m line 1142, kAXErrorSuccess on line 15 of login.js, #0 setValue() 

コードは次のようになります。

var textfields = UIATarget.localTarget().frontMostApp().mainWindow().textFields();
username = textfields["username"];
username.setValue("test");

ユーザー名フィールドが null または未定義ではありません。

私の 2 番目の解決策は、この JS プロジェクトでした: https://github.com/alexvollmer/tuneup_js#readme テキスト フィールド用の "typeString" メソッドがありますが、少しバグがあり、数字と大文字を入力すると失敗します。

私は iOS6.1、Instruments バージョン 4.6 (46000)、Xcode バージョン 4.6 (4H127) で作業しています。

どんな助けでも大歓迎です!

4

2 に答える 2

10

以下があなたに適しているかどうかを確認してください。

ターゲット.遅延(1); UIATarget.localTarget().frontMostApp().mainWindow().textFields()["ユーザー名"].tap(); ターゲット.遅延(1); UIATarget.localTarget().frontMostApp().mainWindow().textFields()["ユーザー名"].setValue("テスト");

うまくいかない場合は、正しい階層を確認してください。

于 2013-02-15T07:45:06.083 に答える
0

UI オートメーション スクリプトがどのように機能するかを理解するのに苦労してここに来ました。そこにあるドキュメントとサンプル コードが実際には不足している (または、すべてのケースを説明していない非常に特定の観点から書かれている) ためです。

私が学んだ主題に関する2つのことは次のとおりです。

  1. 何よりもまず、要素でアクセシビリティを有効にする必要があります。トライアルで無効にしていましたが、再度有効にするまで非常に奇妙な動作をしていました(あなたと同様の「予期しないエラー」が発生しました)。そのため、アクセシビリティがオンになっていることを確認してください。ただし、無効にしても機能するものがあることに注意してください。たとえば、要素の名前 (accessibilityIdentifier) で要素を検索することはできますが、要素をタップしたり を呼び出したりすることはできませんsetValue()

ここに画像の説明を入力

  1. アプリケーション階層を掘り下げる必要があります。私の仮定は、要素に を与えることで、accessibilityIdentifierHTML の のような識別子で要素を簡単に検索できるようになるというものでしたgetElementById。しかし、それはまったくそうではありません。accessibilityIdentifier を使用している場合でも、階層をレベルごとに掘り下げる必要があります。幸いなことに、使用UIAElement.logElementTree()する正しい階層に関する手がかりを得るために を使用できます。

これまでのところ、私はこのフレームワークにまったく感銘を受けていませんが、ゆっくりと進歩しています.

于 2015-10-29T00:10:45.993 に答える