首页 > 编程问答 >如何使用 seleniumbase 传递 chromedriver 文件路径

如何使用 seleniumbase 传递 chromedriver 文件路径

时间:2024-07-20 20:07:17浏览次数:13  
标签:python selenium-chromedriver seleniumbase

我正在使用 seleniumbase 在 chrome 浏览器中打开 url。我的Python项目位于共享文件夹中,它将在虚拟机上执行。当我想从虚拟环境(位于我提到的共享文件夹上)执行 chromedriver.exe 时,出现以下错误:

Service \[我的共享路径 文件夹].venv\Lib\site-packages\seleniumbase\drivers/chromedriver.exe 没想到退出了。状态代码为:1

我发现 chromedriver 只能在虚拟机的本地文件夹上执行。因此,我找到了解决此问题的方法,即使用虚拟机 C 驱动器中的本地文件夹路径(例如“C:/driver/chromedriver.exe”)。现在我的挑战是如何通过 selenium 基础传递此路径以使用此可执行文件?这是我当前的代码:

from seleniumbase import Driver as sbDriver

def get_with_selenium(url: str,
                      headless: bool, 
                      user_agents: list,
) -> dict:
       
    user_agent = random.choice(user_agents['agents']) 
    
    # Get folder path of the Documents
    chromedriver_path = "C:/driver/chromedriver.exe"
    driver = sbDriver(
                          headless=headless,
                          agent=user_agent,
                          binary_location=chromedriver_path
                          )
    driver.get(url)
    driver.maximize_window()
    ... 

        

但是,执行此代码后,我收到以下警告,因为提供的路径无效,并且它继续使用默认路径来执行 chromedriver:

Warning: The Chromium binary specified is NOT valid!
Expecting "chromedriver.exe" to be found in ['chrome.exe', 'chromium.exe', 'brave.exe', 'opera.exe
'] for the browser / OS!
(Will use default settings...)

在使用 seleniumbase 时遇到了 chromedriver.exe 路径问题,这是因为误用了 binary_location 参数。 binary_location 参数用于指定 浏览器 的路径,而不是 chromedriver.exe 的路径。

为了在 seleniumbase 中指定 chromedriver.exe 的路径,需要使用 service_args 参数。

以下是修改后的代码:

from seleniumbase import Driver as sbDriver

def get_with_selenium(url: str,
                      headless: bool,
                      user_agents: list,
) -> dict:

    user_agent = random.choice(user_agents['agents'])

    # 指定 chromedriver.exe 的路径
    chromedriver_path = "C:/driver/chromedriver.exe"

    service_args = ['--webdriver_chrome_driver='+chromedriver_path]

    driver = sbDriver(
        headless=headless,
        agent=user_agent,
        service_args=service_args
    )
    driver.get(url)
    driver.maximize_window()
    ...

在这个修改后的代码中:

  1. 我们创建了一个名为 service_args 的列表,并将 --webdriver_chrome_driver= chromedriver_path 拼接成一个字符串,作为列表的唯一元素。
  2. 我们将 service_args 传递给 sbDriver service_args 参数。

这样, seleniumbase 就会使用指定的 chromedriver.exe 路径来启动 Chrome 浏览器。

注意:

  • 确保 chromedriver.exe 的版本与使用的 Chrome 浏览器版本兼容。
  • 如果在虚拟机上运行代码,请确保虚拟机可以访问 C:/driver/chromedriver.exe 路径,或者将 chromedriver.exe 放置在虚拟机可以访问的共享文件夹中,并相应地修改路径。

标签:python,selenium-chromedriver,seleniumbase
From: 78772471

相关文章

  • python查看某个包的当前安装版本以及最新版本
    方法1:使用pip和--outdated参数你可以使用piplist--outdated命令来查看哪些包有更新版本可用。这个命令会列出所有安装的包以及它们在PyPI上的最新版本。piplist--outdated这将输出一个包列表,包含当前版本和最新版本,例如:PackageVersionLatestTyp......
  • 【python】错误 SyntaxError: invalid syntax的解决方法总结
    【python】错误SyntaxError:invalidsyntax的解决方法总结在Python编程中,SyntaxError:invalidsyntax是一个常见的错误,通常表示Python解释器在尝试解析代码时遇到了语法错误。这种错误可能由多种原因引起,包括拼写错误、缺少关键字、不恰当的缩进等。本文将深入探讨......
  • MiniQMT国债逆回购策略Python代码全解析
    文章目录......
  • python—爬虫的初步了解
    Python爬虫(WebScraping)是一种自动化从网站上提取数据的技术。Python由于其简洁的语法、丰富的库和强大的社区支持,成为了实现网络爬虫的首选语言之一。下面是一些Python爬虫的基本概念和步骤:1.爬虫的基本概念请求(Request):爬虫向服务器发送的请求,通常包括URL、HTTP方法(如......
  • Python集合的概念与使用
      在Python中,集合(set)是一种无序且不包含重复元素的数据结构。集合对象由一组大括号 或 函数创建,但请注意,大括号 在没有元素的情况下会创建一个空字典,而不是空集合。因此,当你想创建一个空集合时,应该使用 set()函数而不是 set{}集合的特点无序:集合中的元素没有特定的......
  • python——面向对象(2)继承与多态
    文章目录继承的基本语法继承的特点继承的类型多态在Python中,继承是一种基于已存在的类来创建新类的方式。这种机制允许我们定义一个通用的类,然后基于这个类来定义一些特定的类,这些特定的类将继承通用类的属性和方法,同时也可以添加或覆盖一些新的属性和方法。这种方式......
  • Python 更换 pip 源详细指南
    目录前言pip国内源临时换源方法一:添加参数方法二:设置环境变量永久换源方法三:修改配置方法四:pip命令修改总结前言在我们使用Python3时,pip是一个不可或缺的工具,它用于安装和管理第三方库。然而,有时我们可能会遇到Python库下载速度慢的问题,这是因为默认的pi......
  • 使用Python的Turtle库绘制中国火箭模型,点燃航天梦!
    引言在编程教育中,turtle模块是一个非常受欢迎的图形化编程工具,尤其适合初学者学习和实践。它允许我们通过控制一个可以在屏幕上移动的“小乌龟”来绘制各种形状和图案,从而让编程变得直观且有趣。Turtle库简介turtle是Python标准库的一部分,它提供了一个简单而强大的绘图环......
  • 用Python调整图片尺寸教程【附源码】
    就像我们学习数学一样,多做题多练习,才会熟能生巧。更多项目源码,实战案例,文件夹领取方式在文末学习Python也是一样,练习才是学好Python的最优解。只有不停的敲代码,不断练习,才能不断进步。实操练习你是否遇到过上传照片有大小要求?不管是上传证件照报名参赛,总会有一个不要......
  • 干货 |Python中的循环结构
    应用场景我们在写程序的时候,一定会遇到需要重复执行某条或某些指令的场景。例如用程序控制机器人踢足球,如果机器人持球而且还没有进入射门范围,那么我们就要一直发出让机器人向球门方向移动的指令。在这个场景中,让机器人向球门方向移动就是一个需要重复的动作,当然这里还会......