我正在使用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()
方法也不起作用。
我将如何告诉选择器获取随机的月份和日期?
答案 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方法,然后检查值。