#python #selenium #selenium-chromedriver
#python #селен #selenium-chromedriver
Вопрос:
Я хочу ввести значение в поле
Я нахожу элемент с помощью:
driver.find_element_by_xpath('//*[@id="cell--gE-Ez1qtyIA"]')
И я делаю это, чтобы отобразить текст и щелкнуть:
driver.find_element_by_xpath('//*[@id="cell--gE-Ez1qtyIA"]').click()
driver.find_element_by_xpath('//*[@id="cell--gE-Ez1qtyIA"]').text
Пока все хорошо, но я использую этот код, когда хочу отправить значение в это поле:
driver.find_element_by_xpath('//*[@id="cell--gE-Ez1qtyIA"]').send_keys('test')
Ничего не происходит, и значение поля не меняется
Комментарии:
1. лучше создайте минимальный рабочий код с реальным URL, чтобы мы могли запустить его и увидеть эту проблему
Ответ №1:
Поскольку мы не знаем о природе текстового поля, к которому вы пытаетесь получить доступ, есть некоторые возможности, из-за которых вы сталкиваетесь с этой ситуацией. send_keys()
работает со всеми текстовыми полями, которые вы когда-либо использовали. Посмотрите на пункты ниже и попробуйте применить его к элементу:
- Элемент не извлекается должным образом, попробуйте какой-нибудь другой локатор, такой как id, name, css_selector.
- Элемент не готов к использованию, установите некоторое явное ожидание и проверьте наличие и видимость элемента.
Пример кода может использовать явное ожидание:
wait = WebDriverWait(driver, 10)
element = wait.until(EC.presence_of_all_elements_located(("xpath", "//*[@id='cell--gE-Ez1qtyIA']")))
element.send_keys("test")
Ответ №2:
Попробуйте использовать javascriptexecutor
вместо sendkeys
WebDriver driver = new ChromeDriver();
JavascriptExecutor je = (JavascriptExecutor)driver;
je.executeScript("document.getElementById('IDofElement').setAttribute('value', 'your value here')");