Исключение таймаута веб-драйвера Python Selenium - PullRequest
0 голосов
/ 26 сентября 2019

Я работаю над проектом по извлечению некоторых данных с веб-сайта.На этом сайте есть поисковая форма, которую я должен заполнить.Один из входных данных, который является текстовым, показывает предложение после ввода 2 или 3 символов, и я должен выбрать эту опцию, чтобы перейти вперед, или кнопка поиска будет активирована.Проблема в том, что когда я использую следующий код:

WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//*[@id='LocationSuggestionBox']/ul/div/li/div"))).click()

я изменил xpath в приведенном выше коде.Фактический xpath выглядит следующим образом:

//*[@id="LocationSuggestionBox""]/ul/div/li/div

Но я не знаю, как добавить его в мой код, чтобы не получить синтаксическую ошибку.

Окончательный результат с моим рабочим кодом::

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//*[@id='LocationSuggestionBox']/ul/div/li/div"))).click()
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/selenium/webdriver/support/wait.py", line 80, in until
    raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: 

Ответы [ 2 ]

2 голосов
/ 26 сентября 2019

Ваш XPath возвращает NULL, когда я запускаю страницу, поэтому селектор здесь неправильный.

На основании предоставленной вами информации о странице, вот правильный селектор:

"//li[div/span[text()='" + locationNameHere + "']]"

Таким образом, вы можете изменить свой код на:

WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//li[div/span[text()='" + locationNameHere + "']]"))).click()

Если вы просто хотите нажать на первое предложение местоположения, вы можете использовать это:

//li[div/span]

Но этот XPath предоставит вам список ВСЕХ видимых предложений местоположения.

1 голос
/ 26 сентября 2019

Индуцировать WebDriverWait и element_to_be_clickable() И следующий xpath.

driver.get('https://locatr.cloudapps.cisco.com/WWChannels/LOCATR/openBasicSearch.do;jsessionid=8CDF9284D014CFF911CB8E6F81812619')
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@id='searchLocationInput']"))).send_keys('China')
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//li[@class='ng-scope']//span[text()='CHINA']"))).click()

Снимок браузера:

enter image description here

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