UIAPickerWheel.selectValue()不适用于UIDatePicker中的文本值

问题描述 投票:5回答:5

我创建了一个简单的项目,使用的故事板只包含一个模式=日期的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}}

请允许任何人提出我可能做错的建议,非常感谢。

ios ios-ui-automation
5个回答
4
投票

最新版本的xcode(4.5.2)已经解决了这个问题

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

它现在可以工作了。


2
投票
while(monthWheel.value() != "June"){
  monthWheel.tapWithOptions({tapOffset:{x:0.5, y:0.33}});
  target.delay(0.5);
}

值不是变量,它是一个函数,所以你应该像我使用的那样在月轮上调用value()。和tapWithOptions()将带你到车轮的下一排。


0
投票

我会点击,直到我的价值是我想要的。由于价值设定为12个月,它将会滚动。

while(target.frontMostApp().mainWindow().pickers()[0].wheels()[0].value != "November"){
  target.frontMostApp().mainWindow().pickers()[0].wheels()[0].tap();
}

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();

0
投票

只需找到特定选取轮的所有值即可

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

如果你想设置11月就行了

picker.wheels()[index]. selectValue (pickerWheel1Values[10]);
© www.soinside.com 2019 - 2024. All rights reserved.