之前写了一个get_dirver函数,单独运行的时候没问题。后面导入调用的时候也是正常的。
但是后面把这个合入到另一个项目的时候就报Unable to locate or obtain driver for {options.capabilities[‘browserName’]}这个错误。
后面编辑源文件,print了一下函数里面获取的路径,显示不是在当前目录,也就是base_path = os.getcwd()获取到的不是当前目录。
后来我查了一下,获取当前目录不能用base_path = os.getcwd(),而要使用

base_path = os.path.dirname(os.path.abspath(__file__))

先获取本文件的绝对目录,然后再截取当前目录

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
# base_path = os.path.dirname(os.path.abspath(__file__))
base_path = os.getcwd()
def get_driver(url):
    # 关闭保存密码提示框,关闭不安全提示
    prefs = {"":""}
    # 是否启用凭据服务
    prefs["credentials_enable_service"] = False
    # 是否启用密码管理器配置文件
    prefs["profile.password_manager_enabled"] = False
    # 启用安全浏览器模式
    #prefs["safebrowsing.enabled"] =  True
    prefs["safebrowsing.enabled"] =  False
    # 设置浏览器默认下载目录
    # prefs["download.default_ directory"] = r"c:\download"
    prefs["download.default_ directory"] = base_path

    options = webdriver.ChromeOptions()
    # 设置chrome.exe和chromedriver.exe的目录
    options._binary_location = base_path + r'\chrome\112.0.5615.138\chrome\Chrome-bin\chrome.exe'
    driver_path = base_path + r"\chrome\112.0.5615.138\chrome\Chrome-bin\chromedriver.exe"
    # 执行完后不自动关闭浏览器
    options.add_experimental_option('detach',True)
    # 关闭下载保护
    options.add_experimental_option("--safebrowsing-disable-download-protection")
    options.add_experimental_option("--safebrowsing-disable-extension-blacklist")

    # 关闭保存密码提示框,
    options.add_experimental_option('prefs', prefs)
    # 设置浏览器分辨率
    options.add_argument("--window-size=1920,1080")
    # 浏览器窗口最大化
    options.add_argument('--start-maximized')
    # 不显示浏览器
    options.add_argument("--headless=new")
    # 禁用GPU
    options.add_argument('--disable-gpu')
    options.add_argument('--disable-dev-shm-usage')
    options.add_argument('--no-sandbox')# linux only
    # 忽略证书错误
    options.add_argument('--ignore-certificate-errors')
    # 如何去掉提示“正受到自动测试软件控制”
    options.add_experimental_option("excludeSwitches", ['enable-automation'])
    # 不显示图片
    options.add_argument('blink-settings-imagesEnabled=false')
    service = Service(executable_path=driver_path)
    driver = webdriver.Chrome(service=service,options=options)
    driver.get(url)
    return driver

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐