1

iPhone アプリ用の自動テストを作成しようとして、障害にぶつかりました。ドキュメントから判断すると、UIPickerView の最初のコンポーネントの最初の行を選択する必要があるように感じます。

var picker = UIATarget.localTarget().frontMostApp().mainWindow().pickers()[0];
var aWheel = picker.wheels()[0];
var someVals = aWheel.values();

aWheel.selectValue(someVals[0]);

しかし、代わりに、Instruments にログインして次のエラーが表示されます。

       Exception raised while running script: - selectValue requires a valid value

どのように私ができるかのアイデア

  • UIPickerView セル/コンポーネントに予測可能な値を設定しますか? 現在、それらはすべて、標準のラベルではなくカスタム UIView を使用しています。

また

  • どういうわけか、既存のセルから値の配列を取得して反復処理しますか?

ここで何が欠けていますか?

4

4 に答える 4

3

私もこの問題を抱えていました。

試すvar newValue = someVals[0].toString();

次に、 を使用newValueしてピッカーで値を選択します。

aWheel.selectValue(newValue);

これは私のために働いた

于 2014-07-15T09:47:43.973 に答える
2

私にとって、selectValueホイールの値が空の場合、スペースがある場合、または特殊文字が含まれている場合、ピッカーホイールオブジェクトのメソッドは機能しませんでした。tapWithOptions({ tapOffset: { x: 0.23, y: 0.72 } })代わりに使用する必要がありました。

于 2012-08-08T05:19:17.450 に答える
1

あなたのコードは正しいようです。ただし、いくつかのチェックを追加する必要があります。ピッカーが空であるか、有効なハンドラーがありません。これが私のコードのやり方です。それが役に立てば幸い。

target      = UIATarget.localTarget();
app         = target.frontMostApp();
mainWindow  = app.mainWindow();


function selectOffice() {

    UIALogger.logStart("selectOffice");

    var validField = false;

    try {

        var picker = mainWindow.pickers()[0];

        if (picker.isValid()) {

            var wheel = picker.wheels()[0];

            if (wheel.isValid()){

                var pickedItems = wheel.values();
                var nrOfItems = pickedItems.length;

                if (nrOfItems > 0 ) {
                    wheel.selectValue(pickedItems[nrOfItems-1]);
                    validField = true;
                }
            }
        }
    }
    catch(error) {
        UIALogger.logFail(error);
    }

    if (validField == true ) {
        UIALogger.logPass("selectOffice");
    } else {
        UIALogger.logFail("Couldnt find a valid control");
    }
    target.delay(1);
}
于 2011-04-11T08:51:55.010 に答える
0

SelectValue()テキスト値では機能しないようです。ただし、数値に対しては機能します。

テキスト値の場合は、現在の値を取得して、それが見つかるまでタップします。

于 2011-12-13T04:51:35.920 に答える