一文解决:selenium.common.exceptions.SessionNotCreatedException: Message: session not created

1.问题原因

你遇到的错误消息表明您正在使用的ChromeDriver的版本与您计算机上安装的Google Chrome版本不兼容。ChromeDriver是一个独立的可执行文件,WebDriver使用它来控制Chrome浏览器。要解决这个问题,您有几个可能的解决方案,具体介绍如下所示。

2.解决办法

1.修改ChromeDriver的版本

此方法需要首先查看当前Chrome浏览器的版本(打开浏览器设置,点击关于Chrome即可查看),然后到对应的ChromeDriver官网ChromeDriver驱动下载地址下载与当前Chrome浏览器一致的驱动文件,然后查询python环境中的ChromeDriver的位置(按下Win+R输入cmd,然后输入where chromedriver),最后将下载的最新版本的驱动文件与之更新即可解决问题。具体操作步骤可以参考博客修改驱动版本解决问题。
一文解决:selenium.common.exceptions.SessionNotCreatedException: Message: session not created_第1张图片

方法评价: 我觉得此方法不太好,因为Chrome浏览器会时刻自动更新,你时刻需要根据Chrome的版本更新情况手动更新ChromeDriver的版本并替换,不能一劳永逸,这里我不推荐这种方法。

2.降级Google Chrome

如果你的ChromeD因版本太高而导致无法更新到对应版本的ChromeDriver,你可以尝试将Chrome浏览器的版本降级到与当前ChromeDriver支持的版本相匹配的版本。因此只需要卸载当前版本的Chrome,然后下载并安装与ChromeDriver对应的旧版本即可。
方法评价:这种方法仍然不推荐,因为卸载和安装Chrome本身就更比较繁琐和费时,下载后的Chrome往往默认就是最新版本,而且如果你下载安装旧版本,浏览器也会自动更新到最新Chrome版本,如果想阻止更新还需要关闭Chrome自动更新的操作,总之实现起来很繁琐和复杂,所以我不推荐。

3.使用WebDriverManager

WebDriverManager是一个库,可以根据您使用的浏览器版本自动下载适当的WebDriver可执行文件。它消除了手动管理WebDriver二进制文件的需求。您可以使用pip(Python包管理器)安装WebDriverManager,然后修改您的代码以使用WebDriverManager来处理WebDriver二进制文件。
具体实现步骤如下所示:
1.下载安装WebDriverManager模块;

pip install webdriver_manager

2.修改代码以使用WebDriverManager管理驱动

#配置参数
from selenium.webdriver import Chrome
opt = Options()
opt.add_argument("--headless")
opt.add_argument("--disbale-gpu")
web = Chrome(options=opt)

# 将上述代码修改为===>
from selenium.webdriver import Chrome
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service
# 创建一个Service对象
service = Service(ChromeDriverManager().install())
#配置参数
opt = Options()
opt.add_argument("--headless")
opt.add_argument("--disbale-gpu")
web = Chrome(service=service, options=opt)
# 即可解决问题

你可能感兴趣的:(selenium,测试工具)