5

I have created a simple project using storyboards containing just a UIDatePicker with mode=Date (so that dates appear like "November" "28" "2011").

Within Instruments UI Automation I am trying to set the values of the individual date picker wheels.

I can successfully use the selectValue() method to set the wheels which contains numeric values but cannot manage to set text value of the month e.g. "November".

This works..

target.frontMostApp().mainWindow().pickers()[0].wheels()[1].selectValue(12);

but this doesn't..

target.frontMostApp().mainWindow().pickers()[0].wheels()[0].selectValue("November");

I get the error: Script threw an uncaught JavaScript error: - selectValue is not supported on a picker with undefined values

I have done a UIATarget.localTarget().frontMostApp().logElementTree() and can see the value is correct:

UIAPickerWheel: value:November rect:{{1, 142}, {146, 216}}

Please can anyone advise on what I might be doing wrong, many thanks.

4

5 に答える 5

4

これは、最新バージョンの xcode (4.5.2) で修正されています。

target.frontMostApp().mainWindow().pickers()[0].wheels()[0].selectValue("November");

これで動作します。

于 2012-11-15T11:36:15.413 に答える
2
while(monthWheel.value() != "June"){
  monthWheel.tapWithOptions({tapOffset:{x:0.5, y:0.33}});
  target.delay(0.5);
}

値は可変ではなく、関数なので、value()私が使用したように月のホイールを呼び出す必要があります。ホイールの次の列に移動しtapWithOptions()ます。

于 2012-05-23T10:55:04.860 に答える
0

自分の価値が欲しいものになるまでタップします。設定された値は12か月なので、ロールアラウンドします。

while(target.frontMostApp().mainWindow().pickers()[0].wheels()[0].value != "November"){
  target.frontMostApp().mainWindow().pickers()[0].wheels()[0].tap();
}
于 2011-12-13T01:15:21.407 に答える
0

を使用して、特定のピッカーホイールのすべての値を見つけるだけです

var pickerWheel1Values  = picker.wheels()[1]. values();

11月を設定したい場合は、

picker.wheels()[index]. selectValue (pickerWheel1Values[10]);
于 2013-12-24T10:45:25.847 に答える
0

Appium を使用している人は、ディスカッション ボードのこのページを参照してください: https://groups.google.com/d/msg/appium-discuss/uYdRTdQDvpU/2I7KSFHnqFwJ

流れは次のようになります。

  • ピッカー要素を取得します (タグ名: picker)
  • そのピッカーのすべてのホイールを取得します (タグ名: pickerwheel)
  • element.getAttribute("values") を実行して、そのホイールの値を一覧表示できます
  • element.setValue(myNewValue) を実行して値を設定できます

最後のステップが間違っているため、setValue() の代わりに sendKeys() を使用する必要があります

私がそれをどのように使用したかのような実際の例については、このようなものになります

String pickerWheelLocation = "UIATarget.localTarget().frontMostApp().windows()[3].pickers()[0].elements()[0]"
By pickerWheelBy = MobileBy.IosUIAutomation(pickerWheelLocation)
IOSElement pickerWheel = WebDriverHelper.getDriver().findElement(pickerWheelBy);
pickerWheel.sendKeys("New Value");

IOSElement doneButton = WebDriverHelper.getDriver().findElement(MobileBy.IosUIAutomation("UIATarget.localTarget().frontMostApp().windows()[2].toolbars()[0].buttons()["Done"]"));
    doneButton.click();
于 2015-11-11T23:56:05.363 に答える