Selenium - выпадающий список показывает новые поля. как я могу обновить драйвер, чтобы он мог их видеть? - PullRequest
0 голосов
/ 20 марта 2020

I Получил этот код:

from selenium import webdriver
from selenium.webdriver.support.ui import Select

myurl = "https://foobar.pl"
driver = webdriver.Chrome()
driver.get(myurl)

select = Select(driver.find_element_by_xpath('/html/body/div/select'))
select.select_by_visible_text('foobar') 

time.sleep(5) 

после выбора «foobar» появляется поле ввода. но после того, как я попробую:

driver.find_element_by_xpath('/html/body/div/div[2]/input').click()

я получу

ElementNotVisibleException: элемент не виден

Как я могу обновить драйвер, чтобы он видел ввод , без обновления страницы (я бы потерял свой выбор)?

Ответы [ 2 ]

0 голосов
/ 20 марта 2020

Обычно это происходит, когда JavaScript изменяет страницу после взаимодействия с ней. Решение заключается в использовании WebDriverWait:

from selenium.webdriver.support import ExpectedConditions as EC

wait = WebDriverWait(driver, 5)
input = wait.until(EC.element_to_be_clickable(By.xpath('/html/body/div/div[2]/input'))
input.click()
0 голосов
/ 20 марта 2020

Можете ли вы попробовать фрагмент кода ниже. Возможно, вам придется подождать между нажатием и получением поля, которое вы хотите получить.

select = Select(driver.find_element_by_xpath('/html/body/div/select'))
select.select_by_visible_text('foobar') 

time.sleep(5)

driver.find_element_by_xpath('/html/body/div/div[2]/input').click()

Сначала вам нужно щелкнуть поле, затем подождать, а затем нажать еще раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...