当前位置: 首页 > 面试题库 >

乌班图:selenium.common.exceptions异常:未创建会话:此版本的ChromeDriver仅支持Chrome版本79

闾丘博超
2023-03-14
问题内容

我在AWS上的EC2实例(ubuntu)上运行了一个python脚本。它使用
硒。好几个星期都很好用,然后突然间,
今天,它停止工作,出现以下错误:

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

这是我在ubuntu上运行的html" target="_blank">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和Chrome浏览器似乎是兼容的。
运行“chromedriver-v”时,我看到的版本是:

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

And, running chromium-browser --version I get:

Chromium 79.0.3945.79 Built on Ubuntu , running on Ubuntu 18.04

Upon running chromium-browser -v I see :

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

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


问题答案:

This error message…

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

…意味着ChromeDriver v79无法启动/生成新的
_浏览上下文,即浏览器版本所在的Chrome浏览器会话
除v79.x外。

您的主要问题是二进制文件版本之间的不兼容
您使用的方法如下:
*您提到过使用_chromedriver=79.0.3945.79。尽管发布的版本是ChromeDriver 79.0.3945.16(2019-10-30)和ChromeDriver 79.0.3945.36(2019-11-18)然而,chromedriver=79.0.3945.79的发行说明提到以下内容:

支持Chrome v79
您使用的是chromium-browser v79.0.3945.79浏览器。
ChromeDriver在默认位置安装时支持“google chrome”,与底层操作系统相关:
Chrome\u二进制\u预期的\u位置
1对于Linux系统,ChromeDriver希望“/usr/bin/google chrome”是
符号链接到实际的Chrome二进制文件。

解决方案

有两种解决方案:
您可以将安装在默认位置的“google chrome”升级到当前的chrome 79.0版本。(根据ChromeDriver v79.0发行说明)
或者,您可以使用文档后面的Chrome browser二进制位置[在非标准位置使用Chrome可执行文件]覆盖默认Chrome二进制位置,即“/usr/bin/google Chrome”(https://sites.google.com/a/chromium.org/chromedriver/capabilities#TOC-使用-a-Chrome-executable-in-a-non-standard-location)作为跟随:

    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/')

通过IDE清理项目工作区,并用所需的依赖项重建项目。
如果您的基本Web客户端版本太旧,请卸载它并安装最新的GA和发布版本的Web客户端。
重新启动系统。
非根用户身份执行您的“@Test”。
*总是调用司机。退出()withintearDown(){}方法,以优雅地关闭和销毁|WebDriver|和|Web Client|实例。



 类似资料: