我有一个在 AWS 上的 EC2 实例 (ubuntu) 上运行的 python 脚本.它使用硒.它运行了好几个星期,然后突然之间,今天,它停止工作并出现以下错误:
selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only support Chrome version 79
这是我在 ubuntu 上运行的 python 脚本:
#安装依赖从硒导入网络驱动程序从 selenium.webdriver.chrome.options 导入选项从 selenium.common.exceptions 导入 ElementNotVisibleException从 selenium.common.exceptions 导入 NoSuchElementException从 selenium.common.exceptions 导入 TimeoutException从 selenium.webdriver.common.by 导入从 selenium.webdriver.support.ui 导入 WebDriverWait从 selenium.webdriver.support 导入 expected_conditions 作为 EC#设置chromedriver选项=选项()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")驱动程序 = webdriver.Chrome(chrome_options=options)
奇怪的是 chromedriver 和 chromium-browser 似乎兼容.
运行 chromedriver -v
我看到的版本是:
ChromeDriver 79.0.3945.79 (29f75ce3f42b007bd80361b0dfcfee3a13ff90b8-refs/branch-heads/3945@{#916})
并且,运行 chromium-browser --version
我得到:
Chromium 79.0.3945.79 基于 Ubuntu 构建,在 Ubuntu 18.04 上运行
运行 chromium-browser -v
我看到了:
(chromium-browser:2901): Gtk-WARNING **: 17:28:14.613: 无法打开显示:
我希望回答的两个问题:
怎么可能工作了几个星期,突然之间,chromedriver 和 chrome 决定不合作了?是不是 chromedriver 或 chrome 都更新了,而另一个没有更新?除了更新从 crontab 运行脚本的时间之外,我没有更改任何内容.
为什么我的 chromedriver 和 chrome 浏览器版本相同时会出现这个错误?让 chromedriver 在 ubuntu 上使用 chrome(无头)是一个非常漫长的过程,如果可能的话,我想设置它并忘记它".寻找远方以更好地理解这个问题,这样我就可以避免它一次又一次地发生.
谢谢.
这个错误信息...
selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only support Chrome version 79
...暗示 ChromeDriver v79 无法启动/生成新的浏览上下文,即浏览器版本所在的 Chrome 浏览器 会话不是 v79.x.
<小时>您的主要问题是您使用的二进制文件版本之间的不兼容性,如下所示:
或者您可以使用 chromium-browser
覆盖默认的 Chrome 二进制位置,即 /usr/bin/google-chrome
文档后的二进制位置 在非标准位置使用 Chrome 可执行文件 如下:
从 selenium 导入 webdriver从 selenium.webdriver.chrome.options 导入选项选项=选项()options.binary_location='/path/to/chromium-browser.exe'driver = webdriver.Chrome(executable_path=r'C:UtilityBrowserDriverschromedriver.exe', options=options)driver.get('http://google.com/')
您可以在 如何找到详细讨论使用 Selenium 运行 Chromium 浏览器?
@Test
.tearDown(){}
方法中调用 driver.quit()
来关闭 &优雅地销毁 WebDriver 和 Web Client 实例.您可以在以下位置找到相关的详细讨论:
I have a python script running on an EC2 instance (ubuntu) on AWS. It uses selenium. It was working perfectly for weeks, and then all of the sudden, today, it stopped working with the following error:
selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 79
Here is my python script, which I'm running on ubuntu:
#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)
What is odd is that chromedriver and chromium-browser appear to be compatible.
Upon running chromedriver -v
I see the version is:
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:
Two questions I'm hoping to answer :
How could work for weeks, and then all of the sudden, chromedriver and chrome decide not to cooperate with each other? Could it be that either chromedriver or chrome was updated without the other being updated? I did not change anything, with the exception of updating the time from which the script was run from crontab.
Why is this error happening when my chromedriver and chrome browser are the exact same version? It was an extremely long process to get chromedriver to work with chrome (headless) on ubuntu and I'd like to "set it and forget it" if possible. Looking for away to better understand this problem so I can avoid it happening again and again.
Thanks.
This error message...
selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 79
...implies that the ChromeDriver v79 was unable to initiate/spawn a new Browsing Context i.e. Chrome Browser session where the browser version was other then v79.x.
Your main issue is the incompatibility between the version of the binaries you are using as follows:
Supports Chrome v79
google-chrome
when installed at the default location with respect to the underlying os:1For Linux systems, the ChromeDriver expects /usr/bin/google-chrome
to be a symlink to the actual Chrome binary.
There are two solutions:
google-chrome
installed at the default location to current Chrome Version 79.0 level. (as per ChromeDriver v79.0 release notes)Or you can override the default Chrome binary location i.e. /usr/bin/google-chrome
with the chromium-browser
binary location following the documentation Using a Chrome executable in a non-standard location as follows:
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:UtilityBrowserDriverschromedriver.exe', options=options)
driver.get('http://google.com/')
You can find a detailed discussion in How to run a Chromium Browser with Selenium?
@Test
as non-root user.driver.quit()
within tearDown(){}
method to close & destroy the WebDriver and Web Client instances gracefully.You can find a relevant detailed discussion in:
这篇关于Ubuntu:selenium.common.exceptions:未创建会话:此版本的 ChromeDriver 仅支持 Chrome 版本 79的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!