Выпадающее меню Selenium NoSuchElementException

Как я могу обойти сообщение об ошибке NoSuchElementException, используя Selenium в Python? Я пытаюсь выбрать тип отчета из раскрывающегося меню и после запуска этого кода:

 from selenium.webdriver.support.select import Select

 driver = webdriver.Chrome()

 driver.get("https://examplehtml.com/gims/app/reports")

 ##Report type

 driver.find_element_by_xpath('//*[@id="reportType"]').send_keys("Power 
 Report")

Это вставляет слово «Power Report», но не выбирает и не перемещает страницу вперед, как если бы я вручную выбрал тип отчета, и я думаю, что это из-за ошибки NoSuchElementException. Почему элемент не найден и как обойти эту ошибку. Я новичок в Selenium, поэтому любой совет поможет.

Заранее спасибо!


person Jelena    schedule 22.10.2018    source источник
comment
добавить html элемента, который вы пытаетесь найти?   -  person Navarasu    schedule 22.10.2018
comment
К сожалению, я не могу поделиться html, так как доступ к сайту ограничен @Navarasu   -  person Jelena    schedule 22.10.2018


Ответы (2)


Пожалуйста, убедитесь, что элемент, который вы пытаетесь найти, виден. Селен не может работать с невидимыми элементами. Если нужный элемент находится в раскрывающемся меню, сначала вам нужно раскрыть это меню. Затем попробуйте найти элемент еще раз.

person Community    schedule 22.10.2018

Я думаю, вам нужно использовать класс Select, который вы импортируете. Итак, если ваш HTML выглядит так:

<select>
  <option value="1">Power Report</option>
  <option value="2">Other Report</option>
</select>

.. тогда я бы попробовал этот код:

e = driver.find_element_by_xpath('//*[@id="reportType"]')
Select(e).select_by_value('1')

.. в случае, если выпадающий элемент является элементом выбора HTML.

person Lukas    schedule 22.10.2018
comment
Я попробовал ваш метод, но он не работает для меня. Я также пытался использовать SendKeys и использовать метод щелчка, но при использовании любого из них я получаю ошибку неразрешенной ссылки. - person Jelena; 23.10.2018
comment
Я только что обновил свой оригинальный пост. Вам нужно использовать атрибут value элемента option в функции select_by_value. Если это не сработает, то я думаю, без вашего HTML мы не сможем сделать больше @Jelena - person Lukas; 24.10.2018