5

我使用情节提要创建了一个简单的项目,其中仅包含一个 UIDatePicker 且 mode=Date (因此日期显示为“November”“28”“2011”)。

在 Instruments UI Automation 中,我试图设置各个日期选择器轮的值。

我可以成功地使用 selectValue() 方法来设置包含数值的轮子,但无法设置月份的文本值,例如“十一月”。

这有效..

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

但这不是..

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

我得到错误:Script threw an uncaught JavaScript error: - selectValue is not supported on a picker with undefined values

我做了一个UIATarget.localTarget().frontMostApp().logElementTree()并且可以看到值是正确的:

UIAPickerWheel:值:11 月矩形:{{1, 142}, {146, 216}}

请任何人建议我可能做错了什么,非常感谢。

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 不是变量,它是一个函数,所以你应该value()像我使用的那样在月轮上调用。并将tapWithOptions()带您到方向盘的下一行。

于 2012-05-23T10:55:04.860 回答
0

只需使用找到特定选择轮的所有值

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

如果你想设置十一月就做

picker.wheels()[index]. selectValue (pickerWheel1Values[10]);
于 2013-12-24T10:45:25.847 回答
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

对于使用 Appium 的任何人,请在讨论板上查看此页面:https ://groups.google.com/d/msg/appium-discuss/uYdRTdQDvpU/2I7KSFHnqFwJ

流程是这样的:

  • 获取您的选择器元素(标签名称:选择器)
  • 获取该选择器的所有轮子(标签名称:pickerwheel)
  • 您可以通过执行 element.getAttribute("values") 列出该轮子的值
  • 您可以通过执行 element.setValue(myNewValue) 来设置值

最后一步是错误的,你需要使用 sendKeys() 而不是 setValue()

对于一个真实的例子,比如我如何使用它会是这样的

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 回答