Ubuntu: selenium 元素,常见,例外:未创建会话:此版本的ChromeDriver仅支持Chrome版本79

f4t66c6m  于 2022-12-22  发布在  其他
关注(0)|答案(2)|浏览(167)

我有一个Python脚本运行在AWS上的EC2示例(Ubuntu)上。它使用了Selenium。它完美地工作了几个星期,然后突然,今天,它停止了工作,并出现了以下错误:

selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 79

这是我在Ubuntu上运行的Python脚本:

#install dependencies
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.common.exceptions import ElementNotVisibleException
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import TimeoutException

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

#Set up chromedriver
options = Options()
options.add_argument('--no-sandbox')
options.add_argument('--window-size=1420,1080')
options.add_argument('--headless')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--disable-gpu')
options.add_argument("--disable-notifications")

driver = webdriver.Chrome(chrome_options=options)

奇怪的是,chromedriver和chromium浏览器似乎是兼容的。
运行chromedriver -v时,我看到版本为:

ChromeDriver 79.0.3945.79 (29f75ce3f42b007bd80361b0dfcfee3a13ff90b8-refs/branch-heads/3945@{#916})

然后,运行chromium-browser --version,得到:

Chromium 79.0.3945.79 Built on Ubuntu , running on Ubuntu 18.04

运行chromium-browser -v时,我看到:

(chromium-browser:2901): Gtk-WARNING **: 17:28:14.613: cannot open display:

我希望回答两个问题:
1.怎么可能工作了几个星期,然后突然之间,chromedriver和Chrome决定不合作?会不会是chromedriver或chrome更新了,而另一个没有更新?我没有改变任何东西,除了更新了从crontab运行脚本的时间。
1.为什么我的chromedriver和Chrome浏览器是完全相同的版本时会发生这个错误?让chromedriver在Ubuntu上与Chrome(headless)一起工作是一个非常漫长的过程,如果可能的话,我想“设置它,忘记它”。我正在寻找一种方法来更好地理解这个问题,这样我就可以避免它一次又一次地发生。

brccelvz

brccelvz1#

此错误消息...

selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 79

...表示 ChromeDriver v79 无法启动/生成新的 * 浏览上下文 *,即浏览器版本不是v79.x的 *Chrome浏览器 * 会话。
您的主要问题是所使用的二进制文件版本之间的不兼容性,如下所示:

支持Chrome v79

  • 您正在使用 * chromium浏览器v79.0.3945.79 * 浏览器。
  • 当安装在相对于底层操作系统的默认位置时,ChromeDriver支持google-chrome

1对于Linux系统,ChromeDriver期望/usr/bin/google-chrome是实际Chrome二进制文件的符号链接。
溶液
有两种解决方案:

  • 您可以将安装在默认位置的google-chrome升级到当前的 Chrome Version 79.0 级别。(根据ChromeDriver v79.0 release notes
  • 或者,您可以按照文档在非标准位置使用Chrome可执行文件,将默认的Chrome二进制位置(即/usr/bin/google-chrome)覆盖为**chromium-browser**二进制位置,如下所示:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.binary_location='/path/to/chromium-browser.exe'
driver = webdriver.Chrome(executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe', options=options)
driver.get('http://google.com/')

您可以在如何使用Selenium运行Chromium浏览器?中找到详细的讨论。

  • 通过您的 IDE**清理 * 您的 * 项目工作区 *,并仅使用必需的依赖项 * 重建 * 您的项目。
  • 如果您的基本 Web Client 版本太旧,请将其卸载,然后安装 Web Client 的最新GA和发布版本。
  • 执行 * 系统重启 *。
  • 非root用户身份执行@Test
  • 始终在tearDown(){}方法中调用driver.quit(),以正常关闭和销毁 WebDriverWeb Client 示例。

参考

您可以在以下位置找到相关的详细讨论:

  • 如何在Chrome浏览器通过Python selenium自动更新时使用特定版本的ChromeDriver
cwxwcias

cwxwcias2#

默认情况下,webdriver.Chrome运行/usr/bin/google-chrome(如果可用),而不是chromium-browser(请参见Default location of ChromeDriver binary and Chrome binary on windows 7)。选中google-chrome --version

相关问题