Вопрос-Ответ

"selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element" while clicking a 'Next' button with Selenium

"selenium.common.exceptions.NoSuchElementException: Сообщение: нет такого элемента: не удается найти элемент" при нажатии кнопки "Далее" с помощью Selenium

Я пытаюсь нажать кнопку Next с помощью Selenium, я пробовал с приведенным ниже кодом, но это заканчивается ошибкой.

Элемент

<input type="submit" name="submitNext" value="Next">

Мой код

driver.find_element_by_name("submitNext").click()

Но затем он выдает эти ошибки:

Traceback (most recent call last):
File "C:/Users/thomas/PycharmProjects/test/mainapp/main.py", line 194, in
<module>
visa()
File "C:/Users/thomas/PycharmProjects/test/mainapp/main.py", line 174, in visa
driver.find_element_by_name("submitNext").click()
File "C:\Users\thomas\PycharmProjects\BudgetMain\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 487, in find_element_by_name
return self.find_element(by=By.NAME, value=name)
File "C:\Users\thomas\PycharmProjects\BudgetMain\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 955, in find_element
'value': value})['value']
File "C:\Users\thomas\PycharmProjects\BudgetMain\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 312, in execute
self.error_handler.check_response(response)
File "C:\Users\thomas\PycharmProjects\BudgetMain\venv\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"name","selector":"submitNext"}
(Session info: chrome=66.0.3359.170)
(Driver info: chromedriver=2.36.540470 (e522d04694c7ebea4ba8821272dbef4f9b818c91),platform=Windows NT 10.0.16299 x86_64)

Как я могу нажать эту кнопку без ошибок?

Переведено автоматически
Ответ 1

Это сообщение об ошибке...

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"name","selector":"submitNext"}
(Session info: chrome=66.0.3359.170)
(Driver info: chromedriver=2.36.540470)

...подразумевает, что ChromeDriver не смог найти нужный элемент.

Поиск нужного элемента

Согласно предоставленному вами HTML-коду, чтобы щелкнуть по элементу, вы можете использовать любую из следующих стратегий поиска:


  • css_selector:


      driver.find_element_by_css_selector("input[name='submitNext'][value='Next']").click()


  • xpath:


      driver.find_element_by_xpath("//input[@name='submitNext' and @value='Next']").click()


Однако ваша основная проблема заключается в совместимости версий между двоичными файлами, которые вы используете следующим образом:


  • Вы используете chromedriver = 2.36

  • В примечаниях к выпуску chromedriver = 2.36 четко упоминается следующее:


Поддерживает Chrome v63-65



  • Вы используете chrome = 66.0

  • В примечаниях к выпуску ChromeDriver версии v2.38 четко упоминается следующее:


Поддерживает Chrome v65-67



  • Версия вашего клиента Selenium нам неизвестна.

Итак, существует явное несоответствие между ChromeDriver версии 2.36 и браузером Chrome версии 66.0

Решение


  • Обновите Selenium до текущего уровня версии 3.11.0.

  • Обновите ChromeDriver до текущего уровня ChromeDriver версии v2.38.

  • Сохранить версию Chrome на уровне Chrome v66.x. (согласно примечаниям к выпуску ChromeDriver версии v2.38)

  • Очистите рабочее пространство вашего проекта через вашу IDE и перестройте ваш проект только с необходимыми зависимостями.

  • Используйте инструмент CCleaner, чтобы удалить всю рутинную работу ОС до и после выполнения вашего набора тестов.

  • If your base Web Client version is too old, then uninstall it through Revo Uninstaller and install a recent GA and released version of Web Client.

  • Take a System Reboot.

  • Execute your @Test.

python selenium selenium-webdriver