Python 3.x selenium.common.exceptions.SessionNotCreatedException:消息:会话不是从选项卡创建的,使用ChromeDriver Chrome selenium Python崩溃

Python 3.x selenium.common.exceptions.SessionNotCreatedException:消息:会话不是从选项卡创建的,使用ChromeDriver Chrome selenium Python崩溃,python-3.x,selenium,google-chrome,selenium-chromedriver,Python 3.x,Selenium,Google Chrome,Selenium Chromedriver,我在尝试访问脚本请求的url时,显然出现了这个错误,该url没有特定的url。我不明白这个错误的确切原因,但我想处理它,以免在它发生时中止脚本 这是重复的,但不能解决我的问题: 代码: 错误: Traceback (most recent call last): File "scripts/page11.py", line 15, in <module> driver = webdriver.Chrome(BASE_WEB_DRIVER, options=chrome_o

我在尝试访问脚本请求的url时,显然出现了这个错误,该url没有特定的url。我不明白这个错误的确切原因,但我想处理它,以免在它发生时中止脚本

这是重复的,但不能解决我的问题:

代码:

错误:

Traceback (most recent call last):
  File "scripts/page11.py", line 15, in <module>
    driver = webdriver.Chrome(BASE_WEB_DRIVER, options=chrome_options)
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/chrome/webdriver.py", line 76, in __init__
    RemoteWebDriver.__init__(
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.SessionNotCreatedException: Message: session not created
from tab crashed
  (Session info: headless chrome=78.0.3904.108)
回溯(最近一次呼叫最后一次):
文件“scripts/page11.py”,第15行,在
driver=webdriver.Chrome(基本WEB\u驱动程序,选项=Chrome\u选项)
文件“/usr/local/lib/python3.8/site packages/selenium/webdriver/chrome/webdriver.py”,第76行,在__
RemoteWebDriver.\uuu init__(
文件“/usr/local/lib/python3.8/site packages/selenium/webdriver/remote/webdriver.py”,第157行,在__
启动会话(功能、浏览器配置文件)
文件“/usr/local/lib/python3.8/site packages/selenium/webdriver/remote/webdriver.py”,第252行,在启动会话中
响应=self.execute(Command.NEW_会话,参数)
文件“/usr/local/lib/python3.8/site packages/selenium/webdriver/remote/webdriver.py”,第321行,在execute中
self.error\u handler.check\u响应(响应)
文件“/usr/local/lib/python3.8/site packages/selenium/webdriver/remote/errorhandler.py”,第242行,在check_响应中
引发异常类(消息、屏幕、堆栈跟踪)
selenium.common.exceptions.SessionNotCreateException:消息:未创建会话
从tab崩溃
(会话信息:无头镀铬=78.0.3904.108)
Chrome:
Google Chrome 78.0.3904.108
和驱动程序:
ChromeDriver 78.0.3904.105(60E2D8774A8151EFA6A0B1F358371B10E07EE2参考/分支头/3904{877})是兼容的。

此错误消息

  selenium.common.exceptions.SessionNotCreatedException: Message: session not created
  from tab crashed
(Session info: headless chrome=78.0.3904.108)
…意味着ChromeDriver无法启动/生成新的浏览上下文,即Chrome浏览器会话


分析与解决方案 此问题有多种解决方案。但是,根据情况,此问题可通过以下任一解决方案解决:

  • 添加以下
    chrome\u选项

    chrome_options.add_argument('--no-sandbox')         
    
  • 另一个可行的选择是将
    chrome\u选项添加为
    ——禁用dev-shm用法。这将强制chrome使用
    /tmp
    目录。这可能会降低执行速度,因为将使用磁盘而不是内存

    chrome_options.add_argument('--disable-dev-shm-usage')
    
  • 因此,有效地,您的代码块将是:

    from bs4 import BeautifulSoup
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    chrome_options = Options()
    chrome_options.add_argument('--no-sandbox')
    chrome_options.add_argument('--ignore-certificate-errors')
    chrome_options.add_argument('--headless')
    chrome_options.add_argument('--disable-dev-shm-usage')
    driver = webdriver.Chrome(executable_path='/driver/chromedriver', options=chrome_options)
    

从tab崩溃 自tab崩溃以来一直是Chromium团队的在制品(Work In Progress),这与Linux试图始终将/dev/shm用于非可执行内存有关。以下是参考资料:

  • 据了解,该修复程序似乎已使用Chrome v65.0.3299.6登陆

参考文献
您可以在

中找到详细的讨论。我按照建议应用了更正,但仍然是相同的错误。还有其他建议吗?我有相同的问题脚本独立运行得很好。但是在我的Web应用程序(odoo)中没有运行,并且给出了相同的错误。
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--ignore-certificate-errors')
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome(executable_path='/driver/chromedriver', options=chrome_options)