我创建了一个简单的项目,使用的故事板只包含一个模式=日期的UIDatePicker(因此日期显示为“11月”“28”“2011”)。
在仪器UI自动化中我试图设置各个日期选择器轮的值。
我可以成功使用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:value:November rect:{{1,142},{146,216}}
请允许任何人提出我可能做错的建议,非常感谢。
最新版本的xcode(4.5.2)已经解决了这个问题
target.frontMostApp().mainWindow().pickers()[0].wheels()[0].selectValue("November");
它现在可以工作了。
while(monthWheel.value() != "June"){
monthWheel.tapWithOptions({tapOffset:{x:0.5, y:0.33}});
target.delay(0.5);
}
值不是变量,它是一个函数,所以你应该像我使用的那样在月轮上调用value()
。和tapWithOptions()
将带你到车轮的下一排。
我会点击,直到我的价值是我想要的。由于价值设定为12个月,它将会滚动。
while(target.frontMostApp().mainWindow().pickers()[0].wheels()[0].value != "November"){
target.frontMostApp().mainWindow().pickers()[0].wheels()[0].tap();
}
对于使用Appium的任何人,请在讨论板上查看此页面:https://groups.google.com/d/msg/appium-discuss/uYdRTdQDvpU/2I7KSFHnqFwJ
流程如下:
最后一步是错误的,您需要使用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();
只需找到特定选取轮的所有值即可
var pickerWheel1Values = picker.wheels()[1]. values();
如果你想设置11月就行了
picker.wheels()[index]. selectValue (pickerWheel1Values[10]);