selenium调用本地指定版本chrome及chromedriver

查看 94|回复 9
作者:FeiyuYip   

最近chrome又自动更新了,导致原先的chromedriver不匹配,不能使用了。并且chrome更新的版本还特别奇怪,暂时没有匹配的chromedriver,真是头疼……



1.png (22.33 KB, 下载次数: 0)
下载附件
2024-10-22 23:03 上传

chrome及chromedriver下载地址
Chrome for Testing availability


2.png (418.46 KB, 下载次数: 0)
下载附件
2024-10-22 23:04 上传

这里下载130.0.6723.58版本的chrome及chromedriver后,解压待用(只测试了32位的)。chrome运行后是这样


3.png (30.66 KB, 下载次数: 0)
下载附件
2024-10-22 23:06 上传



4.png (78.5 KB, 下载次数: 0)
下载附件
2024-10-22 23:10 上传

(提示Testing版本,不过不影响调试网页)
selenium调用本地指定版本chrome及chromedriver示例代码
[Python] 纯文本查看 复制代码from selenium import webdriver
from selenium.webdriver.chrome.service import Service  # 新增 Service 导入
from selenium.webdriver.chrome.options import Options
import os
def main(url):
    # Chrome options设置
    chrome_options = Options()
    chrome_options.binary_location = os.path.join(os.getcwd(), 'chrome-win32\chrome.exe')  # 放在程序同路径,或可任意指定
    chrome_driver_path = os.path.join(os.getcwd(), 'chromedriver-win32\chromedriver.exe')  # 放在程序同路径,或可任意指定
    # 添加无头模式
    # chrome_options.add_argument("--headless")  # 静默运行
    # chrome_options.add_argument("--no-sandbox")  # 不使用沙箱
    # chrome_options.add_argument("--disable-dev-shm-usage")  # 解决DevToolsActivePort文件不存在的错误
    # 使用 Service 传入 ChromeDriver 路径
    chrome_service = Service(chrome_driver_path)
    # 初始化浏览器
    browser = webdriver.Chrome(service=chrome_service, options=chrome_options)
    browser.get(url)
    print(browser.current_url)
    browser.quit()
if __name__ == '__main__':
    url = "https://www.baidu.com"  # 示例URL
    main(url)

下载次数, 版本

无阻   

一般来说都用ChromeDriverManager来自动管理
[Python] 纯文本查看 复制代码from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from pyefun import *
if __name__ == '__main__':
    创建目录(取运行目录() + "/ChromeDriverManager/")
    # 初始化ChromeDriverManager
    manager = ChromeDriverManager()
    # 获取应该使用的chromeDriver版本号组装成一个文件名
    file = 取运行目录() + "/ChromeDriverManager/" + manager.driver.get_name() + "." + manager.driver.get_driver_version_to_download() + ".exe"
    # 判断指定版本的chromeDriver是否存在于本地
    if os.path.exists(file):
        # 如果指定版本ChromeDriver文件存在于本地则使用下载好的ChromeDriver文件
        chromedriver_path = file
    else:
        # 如果指定版本ChromeDriver文件不存在于本地则下载指定版本的ChromeDriver文件并且保存到本地方便下次使用
        manager.driver.get_driver_version_to_download()
        chromedriver_path = manager.install()
        # 文件保存到本地的ChromeDriverManager目录下
        文件_保存(file, 读入文件(chromedriver_path))
    # 正常注册使用selenium服务
    service = Service(file)
    driver = webdriver.Chrome(service=service)
    url = "https://www.52pojie.net"
    driver.get(url)
    print("请按任意键结束本程序")
    input()
modeng   

可以试试,DrissionPage,坛友介绍的,不需要下载chromedriver
无阻   


无阻 发表于 2024-10-23 04:12
一般来说都用ChromeDriverManager来自动管理
[mw_shl_code=python,true]from selenium import webdriver ...

这样的话就会自动检测用户安装的Chromme版本和对应的ChromeDriver版本下载使用。
对于打包分发发布比较友好。
一般来说最新版Chrome用上一个版本的ChromeDriver也是可以用的
但是下载ChromeDriver这个步骤还得看网络。
我好几个客户出问题都是网络不好下载的ChromeDriver文件不完全
小空520   

第一第一
FeiyuYip
OP
  


无阻 发表于 2024-10-23 04:18
这样的话就会自动检测用户安装的Chromme版本和对应的ChromeDriver版本下载使用。
对于打包分发发布比较 ...

像您说的,下载的话有时需要看网络
并且我楼上贴的59版本,使用58版本chromedriver,没有办法使用
smme2021   

能否禁用chrome的自动更新呢?我觉得问题在于chrome老是自动更新还禁止不了,这才是问题所在
mingkongk   

可以从根源上禁止Chrome的自动更新,找到Program Files (x86)中的Chrome的安装目录!禁止update文件夹写入修改权限就能永久禁止
[i]
[i]
dft2010   

不是用edge自动下载比较好么
anning666   

不再推荐使用 Selenium 了,被检测率太高了
俺推荐使用 DrissionPage ,效率很高
您需要登录后才可以回帖 登录 | 立即注册

返回顶部