Суть проблемы:
— есть инпут для заполнения даты
— при вводе (через send_keys) даты в поле появляется datepicker
— когда дейтпикер появляется, то он начинает закрываться кнопку, на которую, после заполнения даты, необходимо нажать
Из описанного выше:
соответственно, через send_keys получаю проблему, что появившейся дейтпикер закрывается кнопку и тест фейлится.
Выбрать “любую” дату из появившегося дейтпикера так же не могу, т.к. выбираемая дата должна изменяться каждый день: минимум — текущий день+4, максимум — текущий день+8.
Кликать по “рандомному” элементу на странице, чтобы закрыть дейтпикер, опять же не хочется, т.к., мне кажется, это не совсем правильно.
(driver as IJavaScriptExecutor).ExecuteScript(
String.Format("$(’{0}’).datepicker(‘setDate’, ‘{1}’)", cssSelector, date));
}`
в этом методе в первой строке ожидается появление дейтпикера, а во второй - драйвер кастится до JavaScriptExecutor и віполняется джаваскрипт “$(’{0}’).datepicker(‘setDate’, ‘{1}’)” где на место {0} подставляется селектор дейтпикера, а на место {1} дата которую надо ввести.
Маленькое уточнение.
Вы ESC посылаете через контрол или драйвер? datepicker.send_key или driver.send_key?
Если посылали через контрол, попробуйте через драйвер.
И ещё вопрос: когда Вы проделываете действия вручную, то при нажатии Esc дайтпикер закрывается или поле очищается?
Идея закючается в том, чтобы вместо стандартных селениумовских средств по типу sendKeys использовать нативные datepicker API через JavascriptExecutor. WebDriver, он и в Python - WebDriver. Вызывать js executor умеете? Вот и передайте ему селектор с датой.
В случае чистого драйвера, снять фокус можно JS командой blur на рутовом компоненте datepicker’а.