Как отправить даты в поля ввода календаря только для чтения с помощью веб-драйвера Selenium? - PullRequest
0 голосов
/ 11 января 2020

Я хочу указать даты начала и окончания.

enter image description here

Я не могу изменить даты по умолчанию, поскольку поля ввода доступны только для чтения , Или я должен выбрать даты, нажав на календарь. Не знаю как это сделать. Есть ли способ отправить ключи в поля ввода только для чтения?

Источники двух полей ввода следующие:

       <div class="date-from">
                <h3>From</h3>
                <input type="text" readonly="readonly" value="Jan 11, 2020">
                <button class="icon la-Calendar"></button>
            </div>

      <div class="date-to">
                        <h3>To</h3>
                        <input type="text" readonly="readonly" value="Jan 11, 2020">
                        <button class="icon la-Calendar"></button>
                    </div>

Мой следующий код получает ошибку «Сообщение: недопустимое состояние элемента». Спасибо!

      browser.find_element_by_xpath('//*[@id="bpcg9kk"]/div/div[3]/div[1]/div[2]/div[1]/div[2]/div[1]/input').clear()
      browser.find_element_by_xpath('//*[@id="bpcg9kk"]/div/div[3]/div[1]/div[2]/div[1]/div[2]/div[1]/input').send_keys("Jan 01,2019")

[Обновление] Почти нет. Используя следующий код. Дата начала успешно изменена. Дата окончания имеет проблему. Дата начала также заканчивается в поле даты окончания.

element = browser.find_element_by_xpath('//*[@id="bpcg9kk"]/div/div[3]/div[1]/div[2]/div[1]/div[2]/div[1]/input')
browser.execute_script("arguments[0].removeAttribute('readonly','readonly')",element)
element.clear()
element.send_keys("Jan 01, 2019")
time.sleep(5)

element2 = browser.find_element_by_xpath('//*[@id="bpcg9kk"]/div/div[3]/div[1]/div[2]/div[1]/div[2]/div[2]/input')
browser.execute_script("arguments[0].removeAttribute('readonly','readonly')",element2)
element2.clear()
element2.send_keys("Dec 31, 2019")

enter image description here

1 Ответ

1 голос
/ 11 января 2020

Вы можете использовать строки ниже вместо send_keys для записи даты в поле ввода даты. В основном мы напрямую меняем значение элемента.

element= browser.find_element_by_xpath('//*[@id="bpcg9kk"]/div/div[3]/div[1]/div[2]/div[1]/div[2]/div[1]/input')

    browser.execute_script("arguments[0].setAttribute('value', ‘“Jan 01,2019"')", element);

    OR



    browser.execute_script(“arguments[0].value=arguments[1]", element, “Jan 01,2019”)

Другое решение:

Сделать поле ввода доступным для редактирования, удалив атрибут readonly, а затем отправив ключи, как показано ниже

element= browser.find_element_by_xpath('//*[@id="bpcg9kk"]/div/div[3]/div[1]/div[2]/div[1]/div[2]/div[1]/input')


browser.execute_script("arguments[0].removeAttribute('readonly','readonly')",element)

element.send_keys("Jan 01,2019")

Очистить поле:

element2.send_keys(Keys.CONTROL + "a");
 element2.send_keys(Keys.DELETE);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...