日期选择器上的selectValue不起作用

时间:2014-07-10 15:01:04

标签: javascript ios ipad ui-automation ios-ui-automation

我正在使用UIAutomation来测试我们的应用。我想要做的是:在今天(同一年)之前的任何一天在datePicker上选择一个随机日期。我已经获得了一个随机的月和日值。这是我的代码:

var currDate = new Date();
var year = currDate.getFullYear();
var month = new Array;
month[0] = "January";
month[1] = "February";
month[2] = "March";
month[3] = "April";
month[4] = "May";
month[5] = "June";
month[6] = "July";
month[7] = "August";
month[8] = "September";
month[9] = "October";
month[10] = "November";
month[11] = "December";


var setMonthInt = currDate.getMonth();
var day = currDate.getDate();

var randomMonth = Math.floor((Math.random() * (setMonthInt + 1 - 0)) + 0);
var valueAtIndex = "\"" + month[randomMonth] + "\"";

if (randomMonth == setMonthInt){
    var randomDay = "\"" + Math.floor((Math.random() * (day)) + 1) + "\"";
} else {
    var randomDay = "\"" + Math.floor((Math.random() * (32)) + 1) + "\"";
}

this.window().popover().pickers()[0].wheels()[1].selectValue(valueAtIndex);
this.window().popover().pickers()[0].wheels()[0].selectValue(randomDay);

我已检查valueAtIndex变量确实返回一个月,例如“March”,randomDay变量确实返回一天,例如“9”。

一旦我使用selectValue()方法,仪器就会抛出错误:- selectValue requires a valid value.

setValue()方法也不起作用。

我将如何告诉选择器获取随机的月份和日期?

2 个答案:

答案 0 :(得分:1)

我设法弄明白它是什么。添加"\""不是必需的。所以我刚创建了两个变量......

var randomDayToString = randomDay.toString();

var randomMonthToString = valueAtIndex.toString();

我使用这两个值来选择日期和月份。

this.window().popover().pickers()[0].wheels()[1].selectValue(randomMonthToString);

this.window().popover().pickers()[0].wheels()[0].selectValue(randomDayToString);

这似乎工作正常。

答案 1 :(得分:0)

根据我在互联网上找到的其他答案,您似乎在月和日之前和之后都不需要'\'。

见这里: UIAPickerWheel.selectValue() not working for text values within UIDatePicker

我最近在UI Automation上工作了很多,但我还没有使用选择器,所以我可能错了。在等待测试结束的时候,我会再研究一下!

这也可能有所帮助:UI Automation Testing: How do I select UIAPickerWheel values?

似乎是这样的情况是UIADatePicker删除了UIAPickerWheel类的一些功能,因为它有多少可能性。因此,如果直接选择日期不起作用,请使用tapWithOffset方法,然后检查值。