【问题标题】:selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element while trying to click Next button with seleniumselenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:尝试使用 selenium 单击下一步按钮时无法找到元素
【发布时间】:2018-10-23 05:51:42
【问题描述】:

所以我尝试使用 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)

有人对如何点击该按钮不出错有任何想法吗?

【问题讨论】:

    标签: python selenium selenium-webdriver xpath css-selectors


    【解决方案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 v2.36Chrome 浏览器 v66.0 之间存在明显的不匹配

    解决方案

    • Selenium升级到当前级别Version 3.11.0
    • ChromeDriver 升级到当前的ChromeDriver v2.38 级别。
    • Chrome 版本保持在 Chrome v66.x 级别。 (as per ChromeDriver v2.38 release notes)
    • 清理你的项目工作区通过你的IDE重建你的项目只需要依赖。
    • 使用CCleaner 工具在执行测试套件之前和之后清除所有操作系统杂务。
    • 如果您的基础 Web Client 版本太旧,请通过 Revo Uninstaller 卸载它并安装最新的 GA 和发布版本的 Web Client
    • 进行系统重启
    • 执行您的@Test

    【讨论】:

    • 对于发现自己使用过时版本的Chromedriver的未来读者,以下网址chromedriver.storage.googleapis.com/LATEST_RELEASE将始终返回最新版本的版本号,可以是在http://chromedriver.storage.googleapis.com/version_number/chromedriver_linux64.zip 中使用以始终下载最新版本的Chromedriver
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    • 1970-01-01
    • 2019-09-23
    相关资源
    最近更新 更多