Python中的Chromedriver错误SessionNotCreatedException

2024-04-20 08:08:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在Python中使用Selenium和Chromedriver。我目前正在使用PyCharm。我的下载中保存了chromedriver.exe文件,它是我使用的Chrome版本的最新版本

文件路径为“C:\Users\ea.palacios\Downloads\chromedriver.exe

我的脚本如下:

from selenium import webdriver
driver = webdriver.Chrome(executable_path='C:\\Users\\ea.palacios\\Downloads\\chromedriver.exe')

我还尝试删除双反斜杠:

from selenium import webdriver
driver = webdriver.Chrome(executable_path='C:\Users\ea.palacios\Downloads\chromedriver.exe')

当我尝试运行任一脚本时,浏览器短暂出现不到一秒钟,然后立即关闭。然后PyCharm返回以下消息:

Traceback (most recent call last): File "C:\Users\marcd.admin\PycharmProjects\PLDT\main.py", line 3, in <module> driver = webdriver.Chrome(executable_path='C:\\Users\\ea.palacios\\Downloads\\chromedriver.exe') File "C:\Users\marcd.admin\PycharmProjects\PLDT\venv\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 76, in __init__ RemoteWebDriver.__init__( File "C:\Users\marcd.admin\PycharmProjects\PLDT\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 157, in __init__ self.start_session(capabilities, browser_profile) File "C:\Users\marcd.admin\PycharmProjects\PLDT\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 252, in start_session response = self.execute(Command.NEW_SESSION, parameters) File "C:\Users\marcd.admin\PycharmProjects\PLDT\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute self.error_handler.check_response(response) File "C:\Users\marcd.admin\PycharmProjects\PLDT\venv\lib\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: chrome=92.0.4515.107)

这是一个screenshot of code and error message

这可能是因为我在我的工作计算机上以管理员身份运行PyCharm,但Chromedriver保存在我的常规下载文件夹中吗?真的不知道!帮助!谢谢


Tags: inpyvenvadminlibseleniumlineexe
2条回答

用途:-

chromedriver自动安装程序

即:

Automatically download and install chromedriver that supports the currently installed version of chrome. This installer supports Linux, MacOS and Windows operating systems.

安装

pip install chromedriver-autoinstaller

用法

只需在要使用的模块中键入import chromedriver_autoinstaller

示例

from selenium import webdriver
import chromedriver_autoinstaller


chromedriver_autoinstaller.install()  # Check if the current version of chromedriver exists
                                      # and if it doesn't exist, download it automatically,
                                      # then add chromedriver to path

driver = webdriver.Chrome()
driver.get("http://www.python.org")
assert "Python" in driver.title

You could use this solution. It will do two things:

  1. Check locally in your computer for the driver version and compare it with the latest version available online.
  2. The latest online version will be automatically downloaded if it does not match your local version.
from selenium import webdriver
import requests
import zipfile
import wget
import subprocess
import os


CHROMEDRIVER_PATH = "" # Insert your Chromedriver path here
CHROMEDRIVER_FOLDER = os.path.dirname(CHROMEDRIVER_PATH)
LATEST_DRIVER_URL = "https://chromedriver.storage.googleapis.com/LATEST_RELEASE"


def download_latest_version(version_number):
    print("Attempting to download latest driver online......")
    download_url = "https://chromedriver.storage.googleapis.com/" + version_number + "/chromedriver_win32.zip"
    # download zip file
    latest_driver_zip = wget.download(download_url, out=CHROMEDRIVER_FOLDER)
    # read & extract the zip file
    with zipfile.ZipFile(latest_driver_zip, 'r') as downloaded_zip:
        # You can chose the folder path to extract to below:
        downloaded_zip.extractall(path=CHROMEDRIVER_FOLDER)
    # delete the zip file downloaded above
    os.remove(latest_driver_zip)


def check_driver():
    # run cmd line to check for existing web-driver version locally
    cmd_run = subprocess.run("chromedriver  version",
                             capture_output=True,
                             text=True)
    # Extract driver version as string from terminal output
    local_driver_version = cmd_run.stdout.split()[1]
    print(f"Local driver version: {local_driver_version}")
    # check for latest chromedriver version online
    response = requests.get(LATEST_DRIVER_URL)
    online_driver_version = response.text
    print(f"Latest online chromedriver version: {online_driver_version}")
    if local_driver_version == online_driver_version:
        return True
    else:
        download_latest_version(online_driver_version)

相关问题 更多 >