【问题标题】:Selenium WebDriverException: Message: unknown error: cannot determine loading status from unknown error: missing or invalid 'entry.level'Selenium WebDriverException:消息:未知错误:无法从未知错误确定加载状态:缺少或无效的“entry.level”
【发布时间】:2018-06-22 03:48:15
【问题描述】:

我有一个使用 selenium 进行测试的脚本。现在甚至使用

打开一个谷歌页面
driver.get(url) # url = Google homepage url

给我下面的错误

driver.get("https://my.gumtree.com/login")
File "C:\Python34\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 245, in get
self.execute(Command.GET, {'url': url})
File "C:\Python34\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 233, in execute
self.error_handler.check_response(response)
File "C:\Python34\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 194, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: cannot determine loading status
from unknown error: missing or invalid 'entry.level'
(Session info: chrome=65.0.3315.3)
(Driver info: chromedriver=2.29.461591 (62ebf098771772160f391d75e589dc567915b233),platform=Windows NT 10.0.16299 x86_64)

我有 Google chrome 版本 65、Chromedriver 2.35 和 selenium 2.53.1

我根据其他类似问题中提到的解决方案尝试了不同的版本组合(在下表中提到),但没有任何效果。

Selenium      Chrome      Chromedriver
2.53.0        63           2.33
2.53.1        65(latest)   2.34
3.6.0                      2.35(latest)
3.7.0
3.8.0
3.8.1(latest)

编辑 1:JDK 版本

java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)

【问题讨论】:

  • selenium 2 已经过时了.. 继续 3.x
  • 感谢您指出,这是一个拼写错误。我已经编辑了问题。
  • 您的错误输出表明您仍在使用 chromedriver=2.29.461591。如果您选择将最新的浏览器版本与最新的 Selenium 一起使用,请确保您也使用最新的驱动程序版本。

标签: python google-chrome selenium selenium-webdriver selenium-chromedriver


【解决方案1】:

最近我遇到同样的问题,花了我太多时间弄清楚发生了什么,在我遇到问题的情况下,我使用它后没有关闭chrome进程,所以你应该检查进程退出与否当您退出应用程序时,这是我最后一次工作的 Python 3 代码演示,希望对其他人有所帮助:

    @staticmethod
    def fetch_music_download_url(music_name: str):
        chrome_driver_service = Service(ChromeDriverManager(chrome_type=ChromeType.GOOGLE).install())
        chrome_options = Options()
        chrome_options.add_argument("--no-sandbox")
        chrome_options.add_argument("--headless")
        chrome_options.add_argument("--disable-gpu")
        chrome_options.add_argument("--remote-debugging-port=9230")
        driver = webdriver.Chrome(service=chrome_driver_service,
                                  options=chrome_options,
                                  executable_path="/usr/local/bin/chromedriver")
        try:
            driver.maximize_window()
            driver.get('http://tool.example.cn/music/?page=audioPage&type=migu&name=' + music_name)
            driver.implicitly_wait(5)
            driver.find_element(By.CSS_SELECTOR, ".aplayer-list-download.iconfont.icon-xiazai").click()
            urls = [a.get_attribute('href') for a in
                    driver.execute_script('return document.querySelectorAll(".modal-body a[href*=\'http\']")')]
            for url in urls:
                if "listenSong.do" in url:
                    logger.info("fetched url:" + url)
                    FetchMusic.do_save_music_download_url(url)
        except Exception as e:
            logger.error("scrapy impl error", e)
        finally:
            driver.stop_client()
            driver.close()
            driver.quit()
            chrome_driver_service.stop()

【讨论】:

    【解决方案2】:

    该错误是因为您的 chrome 浏览器与网络驱动程序不兼容而引发的。如果您使用的是 Linux,则只需执行以下命令。 sudo apt-get 更新

    【讨论】:

      【解决方案3】:

      转到http://chromedriver.chromium.org/downloads

      根据您的操作系统复制下载链接

      wget -N paste_the_link_you_copied
      

      使用下面的命令解压

      unzip chromedriver_linux64.zip
      

      通过以下命令授予权限

      chmod +x chromedriver
      

      然后按照以下命令,如果它说已经存在(可能是旧版本)然后转到该路径(/usr/local/bin/chromedriver 和 /usr/bin/chromedriver)并删除 chromedriver 并再次运行命令

      sudo mv -f chromedriver /usr/local/share/chromedriver
      sudo ln -s /usr/local/share/chromedriver /usr/local/bin/chromedriver
      sudo ln -s /usr/local/share/chromedriver /usr/bin/chromedriver
      

      希望这会有所帮助。谢谢

      【讨论】:

        【解决方案4】:

        错误说明了一切:

        selenium.common.exceptions.WebDriverException: Message: unknown error: cannot determine loading status
        from unknown error: missing or invalid 'entry.level'
        

        您的主要问题是您使用的二进制文件之间的版本兼容性,如下所示:

        • 您正在使用 chromedriver=2.29.461591(根据日志,尽管您在问题中提到了 Chromedriver 2.35
        • chromedriver=2.29.461591 的发行说明明确提及以下内容:

        Supports Chrome v56-58

        • 您正在使用 chrome=65.0.3315.3
        • chromedriver=2.35 的发行说明明确提及以下内容:

        Supports Chrome v62-64

        • 您正在使用 Selenium Version 2.53.1
        • 我们不知道您的 JDK version

        解决方案

        • JDK 升级到最近的级别JDK Version 8 Update 151
        • ChromeDriver升级到ChromeDriver v2.35级别。
        • Chrome 保持在Chrome v64.x 级别。 (as per ChromeDriver v2.35 release notes)
        • Selenium 升级到当前级别Version 3.8.1
        • 从您的 IDE 中清理 Project Workspace全部重建
        • 运行CCleaner 工具以清除所有操作系统杂务。
        • 如果您的 Chrome 基础版本太旧,请通过Revo Uninstaller 卸载 Chrome 并安装最新的 GA Release 版本的 Chrome。
        • 进行系统重启
        • 执行您的Test

        【讨论】:

        • JDK 根据您的建议是最新的。我下载了最新的 2.35 chromedriver,但脚本仍然显示为 2.29。它与脚本位于同一文件夹中。因此,我们可以确定脚本正在选择本地副本。
        • 太棒了!!!请按照以下步骤操作:1) 从您的 IDE 和 Rebuild All 中清除 Project Workspace。 2) 运行CCleaner 工具以清除所有操作系统杂务。 3) 如果您的 Chrome 基础版本太旧,请卸载 ChromeRevo Uninstaller 并安装最新的 GA Release 版本的 Chrome。 4)采取System Reboot。 5) 执行你Tests.
        • 不要太确定...这取决于 PATH
        • @CoreyGoldberg 先生,我不依赖 PATH 设置任何 WebDriver 变体本身。我决定为我的Tests 选择哪个版本的WebDriver 变体,并使用参数executable_path 明确。你觉得我的方法有缺点吗?
        • @DebanjanB,您对 chromedriver.exe 路径进行硬编码的解决方案对我有用。非常感谢
        猜你喜欢
        • 2022-01-05
        • 1970-01-01
        • 1970-01-01
        • 2018-07-06
        • 1970-01-01
        • 1970-01-01
        • 2018-02-07
        • 2018-09-01
        相关资源
        最近更新 更多