剑道日期选择器上的Selenium(nightwatch)设置值不工作
我正在尝试使用nightwatch剑道日期选择器上的Selenium(nightwatch)设置值不工作,selenium,kendo-datepicker,nightwatch,kendo-react-ui,Selenium,Kendo Datepicker,Nightwatch,Kendo React Ui,我正在尝试使用nightwatchsetValue将格式为mm/dd/yyyy的日期字符串输入到剑道反应日期选择器控件中。似乎无论我采取什么方法来选择控件,它总是首先将光标设置在年份部分,然后键入,然后只填充这四个字符。 (例如,如果我提供'05/06/2016',我看到输入中键入的所有内容都是'mm/dd/0016',并且月和日从不更新。) 在正常情况下,如果我用鼠标单击月字段,光标将显示在那里,如果我键入2个字符,一个/2个字符,另一个/,然后最后4个字符,控件将正常工作。selenium选
setValue
将格式为mm/dd/yyyy
的日期字符串输入到剑道反应日期选择器控件中。似乎无论我采取什么方法来选择控件,它总是首先将光标设置在年份部分,然后键入,然后只填充这四个字符。
(例如,如果我提供'05/06/2016',我看到输入中键入的所有内容都是'mm/dd/0016',并且月和日从不更新。)
在正常情况下,如果我用鼠标单击月字段,光标将显示在那里,如果我键入2个字符,一个/
2个字符,另一个/
,然后最后4个字符,控件将正常工作。selenium选择控件和日期选择器的默认行为似乎是个问题
我尝试使用browser.Key.LEFT\u ARROW
查看是否可以先向左移动光标两次,因为辅助功能处理允许向左移动光标。我还尝试先对输入调用clearValue()
,然后从头开始键入,但在这两种情况下都没有成功
如果可以避免的话,我宁愿不使用日历控件选择日期
以下是我的代码当前的样子:
const consumerInfo = {
birthMonth: "05",
birthDay: "06",
birthYear: "2016",
birthDate: "05/06/2016",
};
const datePickerSelector = '.myDatePicker';
const datePickerInputSelector = '.myDatePicker .k-input';
browser.waitForElementVisible(datePickerSelector, DEFAULT_WAIT_TIME)
.waitForElementVisible(datePickerInputSelector, DEFAULT_WAIT_TIME)
.setValue('.myDatePicker .k-input, [
consumerInfo.birthYear,
browser.Keys.LEFT_ARROW,
consumerInfo.birthDay,
browser.Keys.LEFT_ARROW,
consumerInfo.birthMonth,
])
.assert.value(
datePickerInputSelector,
consumerInfo.birthDate,
`Birthdate is set to ${consumerInfo.birthDate}`
);
非常感谢您的任何建议。虽然不完美,但我提出了一个解决方案,希望它能帮助其他人 该方法与我上面提出的方法大致相似,但允许在每次操作之间留出更多的时间。我将其添加到一个util函数中,该函数接受选择器,以输入控件为目标,并使用月/日/年填充控件。有可能在某些地方将时间间隔缩短到500ms以下,但没有比1000ms(有效)和100ms(不一致)更好的测试 见下文:
const toDatePickerInsertion = (browser, pickerInputSelector) => ({
month,
day,
year,
}) => {
return browser
.click(pickerInputSelector)
.pause(500)
.keys(browser.Keys.LEFT_ARROW)
.pause(500)
.keys(browser.Keys.LEFT_ARROW)
.pause(500)
.keys(month)
.pause(500)
.keys(browser.Keys.RIGHT_ARROW)
.pause(500)
.keys(day)
.pause(500)
.keys(browser.Keys.RIGHT_ARROW)
.pause(500)
.keys(year);
};