Javascript 日期选择器上的selectValue不起作用
我正在使用UIAutomation测试我们的应用程序。我想做的是:在日期选择器上选择一个随机日期,在今天之前的任何一天(同一年)。我已经得到了一个随机的月和日值。这是我的密码:Javascript 日期选择器上的selectValue不起作用,javascript,ios,ipad,ui-automation,ios-ui-automation,Javascript,Ios,Ipad,Ui Automation,Ios Ui Automation,我正在使用UIAutomation测试我们的应用程序。我想做的是:在日期选择器上选择一个随机日期,在今天之前的任何一天(同一年)。我已经得到了一个随机的月和日值。这是我的密码: var currDate = new Date(); var year = currDate.getFullYear(); var month = new Array; month[0] = "January"; month[1] = "February"; month[2] = "March"; month[3] =
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
变量是否返回一个月,例如“三月”,而randomDay
变量是否返回一天,例如“9”
只要我使用selectValue()
方法,仪器就会抛出一个错误:-selectValue需要一个有效的值。
setValue()
方法也不起作用
我将如何告诉选取者生成随机的月份和日期?从我在互联网上找到的其他答案来看,似乎你不需要在月份和日期前后使用“\” 请看这里: 最近我在UI自动化方面做了很多工作,但我还没有使用选择器,所以我可能错了。在我等待测试完成的时候,我会再仔细研究一下 这可能也有帮助:
似乎是这样的,UIADatePicker删除了UIAPickerWheel类的一些功能,这是因为有很多可能。因此,如果直接选择日期不起作用,请使用tapWithOffset方法,然后检查值。我设法弄清楚它是什么。添加
“\”
是不必要的。所以我又创建了两个变量
var randomDayToString=randomDay.toString();
var randomnothtostring=valueAtIndex.toString();
我使用这两个值来选择日期和月份
this.window().popover().pickers()[0].wheels()[1].selectValue(randomMonthToString);
this.window().popover().pickers()[0].wheels()[0].selectValue(randomDayToString);
这似乎很好。我认为这一行
Math.floor((Math.random()*(32))+1)
可以返回32作为可能的一天。32*.99四舍五入是31+1是32。也许这就是导致错误的原因?@Braains这不是问题,32没有包含在返回值中