首页 > 编程语言 >利用 Python 和 Selenium 高效启动和管理 Chrome 浏览器

利用 Python 和 Selenium 高效启动和管理 Chrome 浏览器

时间:2024-11-21 12:50:06浏览次数:3  
标签:bat 浏览器 启动 Python driver Selenium Chrome --

在自动化测试和网页抓取的过程中,Selenium 是最常用的工具之一。其强大的功能可以与浏览器无缝集成,实现复杂的操作。然而,为了提高效率和扩展性,尤其在处理大量任务时,我们可以通过定制化的方法启动 Chrome 浏览器并与 Selenium 驱动连接。本文将详细解析两段关键代码,实现以下目标:

  1. 使用批处理(.bat)文件启动 Chrome 浏览器。
  2. 利用 Selenium WebDriver 动态连接已启动的浏览器实例。

优势:启动浏览器后可以随时获取driver,同样也可以随时driver.quit()进行其他操作后再获取driver。


代码实现

1. 使用批处理启动 Chrome

Chrome 提供了丰富的启动参数供开发者自定义浏览器行为。下面的函数通过生成 .bat 文件,以指定参数启动 Chrome:

def start_chrome():
    """
    通过bat的形式启动chrome浏览器
    """
    script = f"""
@echo off
start "" "{config.chrome_path}" --ignore-certificate-errors --remote-debugging-port=9528 --user-data-dir="C:\selenium\ChromeProfile" --download-default-directory="{config.tmp_dir}" --incognito --start-maximized
    """
    bat_path = pathlib.Path(config.tmp_dir, 'start_chrome.bat')
    bat_path.open('w').write(script)
    shell = wincl.Dispatch("WScript.Shell")
    shell.Run(str(bat_path), 1, True)
    time.sleep(3)

代码解析

  1. 批处理文件的生成

    • 利用 Python 的 pathlib 模块,动态生成批处理文件 start_chrome.bat
    • 文件内容包括多个 Chrome 的启动参数:
      • --ignore-certificate-errors:忽略 SSL 证书错误,适用于测试环境。
      • --remote-debugging-port=9528:开启调试模式,指定调试端口。
      • --user-data-dir="C:\selenium\ChromeProfile":定义浏览器用户数据目录,用于隔离会话。
      • --download-default-directory:指定文件下载路径。
      • --incognito:开启无痕模式,避免缓存和 Cookie 干扰。
      • --start-maximized:窗口启动即最大化。
  2. 执行批处理文件

    • 借助 Windows 脚本宿主(WScript.Shell)启动批处理文件,避免阻塞主线程。
    • 使用 time.sleep(3) 确保浏览器完全启动。

2. 利用 Selenium WebDriver 连接已启动的 Chrome

启动浏览器后,通过以下代码,连接到已打开的 Chrome 实例进行自动化操作:

def get_driver(executable_path="chromedriver"):
    """
    获取web driver
    """
    options = webdriver.ChromeOptions()
    options.debugger_address = "127.0.0.1:9528"  # 指定调试端口
    options.add_argument('--ignore-certificate-errors')
    driver = webdriver.Chrome(options=options, executable_path=executable_path)
    driver.implicitly_wait(10)  # 设置隐式等待
    return driver

代码解析

  1. 调试模式连接

    • 使用 options.debugger_address 配置 WebDriver,通过 127.0.0.1:9528 的调试端口连接到已经启动的 Chrome 浏览器。
  2. 忽略证书错误

    • 再次添加 --ignore-certificate-errors 参数,确保与浏览器配置一致,避免潜在冲突。
  3. 隐式等待

    • 设置 driver.implicitly_wait(10),让 WebDriver 在查找元素时最多等待 10 秒,提升稳定性。

两者结合的优势

  1. 快速启动与复用

    • 通过批处理文件启动的 Chrome,可以在多次测试中复用,减少浏览器多次启动带来的资源消耗。
  2. 调试友好

    • 启用 --remote-debugging-port 后,开发者可以通过 Chrome DevTools 直接查看调试信息。
  3. 个性化配置

    • --user-data-dir 允许隔离用户数据,模拟不同用户的浏览行为。
    • 自定义下载路径,方便批量处理文件。

使用示例

完整流程如下:

  1. 启动 Chrome:
    start_chrome()
    

  2. 获取 WebDriver 并操作浏览器:
    driver = get_driver()
    driver.get("https://www.example.com")
    print(driver.title)
    


总结

通过上述方法,我们实现了批处理文件与 Selenium WebDriver 的无缝对接。这种方式特别适用于高效处理自动化测试任务,同时支持灵活的浏览器配置。如果你在实际使用中需要进一步优化,可以根据具体需求调整启动参数,比如添加代理、禁用图片加载等。

这不仅是自动化测试中的一项技巧,也是一种提升开发效率的思路。希望这篇文章能为你的 Selenium 使用提供新的启发!

标签:bat,浏览器,启动,Python,driver,Selenium,Chrome,--
From: https://blog.csdn.net/weixin_42238129/article/details/143876917

相关文章

  • 怎样修改chrome记住密码后自动填充表单的黄色背景?
    Chrome的自动填充表单的黄色背景是由浏览器默认样式控制的,你可以通过CSS来修改它。主要有以下几种方法:1.使用-webkit-autofill伪类:这是最常用的方法,可以直接针对自动填充的表单元素应用样式。input:-webkit-autofill,textarea:-webkit-autofill,select:-webkit-auto......
  • 要让Chrome支持小于12px的文字怎么做?
    Chrome默认不支持小于12px的文字,这是为了保证网页的可访问性。小于12px的文字在很多屏幕上难以阅读,尤其对于视力较差的用户。但是,如果你确实需要显示小于12px的文字,有几种方法可以实现:使用transform:scale():这是最常用的方法,它可以缩放元素,包括其中的文字。......
  • 《Python游戏编程入门》注-第7章
    《Python游戏编程入门》第7章“用精灵实现动画:EscapetheDragon游戏”中通过pygame.sprite模块(精灵)实现了动画效果。1通过精灵实现动画“7.2使用Pygame精灵”中实现了飞龙飞翔的效果,如图1所示。图1飞龙飞翔的效果注意1相关代码及资源,请参考《Python游戏编程入门注-第......
  • 计算机毕业设计源码 python基于爬虫的毕业生兴趣与求职实时智能数据分析
    标题:python基于爬虫的毕业生兴趣与求职实时智能数据分析设计一个基于Python和爬虫技术的毕业生兴趣与求职实时智能数据分析系统,可以帮助高校、企业和毕业生更好地了解就业市场趋势、毕业生兴趣和求职需求,从而优化招聘策略和个人职业规划。以下是一个典型的数据分析系统的主......
  • 计算机毕设设计项目源码 python基于Spark的淘宝服装数据分析系统的设计与实现
    标题:python基于Spark的淘宝服装数据分析系统的设计与实现设计一个基于Python和Spark的淘宝服装数据分析系统,可以帮助商家和平台更好地了解市场趋势、消费者偏好和销售情况,从而优化库存管理和营销策略。以下是一个典型的数据分析系统的主要功能模块:1.系统概述•目标:为淘宝......
  • 【人工智能】Python在机器学习与人工智能中的应用
    Python因其简洁易用、丰富的库支持以及强大的社区,被广泛应用于机器学习与人工智能(AI)领域。本教程通过实用的代码示例和讲解,带你从零开始掌握Python在机器学习与人工智能中的基本用法。1.机器学习与AI的Python生态系统Python拥有多种支持机器学习和AI的库,以下是几个核心库:......
  • 「Chromeg谷歌浏览器/Edge浏览器」篡改猴Tempermongkey插件的安装与使用
    1.谷歌浏览器安装及使用流程1.1准备篡改猴扩展程序包。    因为谷歌浏览器的扩展商城打不开,所以需要准备一个篡改猴压缩包。          其他浏览器只需打开扩展商城搜索篡改猴即可。    没有压缩包的可以进我主页下载。        也可......
  • Python 实现基于BP神经网络的电力负荷预测模型
    目录1. 项目背景介绍...12. 项目目标与意义...13. 项目挑战...24. 项目特点与创新...25. 项目应用领域...26. 效果预测图程序设计...37. 项目模型架构...38. 项目模型描述...49. 项目模型算法流程图...510. 项目结构设计...511. 项目部署与应......
  • Amazing QR!一款 Python 二维码生成器!
    大家好,我是Java陈序员。如今在生活中,二维码随处可见。信息获取、网站跳转、结账支付……一扫二维码全部搞定。今天,给大家介绍一款基于Python实现的二维码生成器!关注微信公众号:【Java陈序员】,获取开源项目分享、AI副业分享、超200本经典计算机电子书籍等。工具介绍Amazin......
  • Chrome DevTools Protocol 进阶:Console域
    前言在日常开发和调试过程中,浏览器控制台(Console)是开发者最常使用的工具之一。通过它,我们可以输出调试信息、错误提示、以及监控JavaScript代码的执行。ChromeDevToolsProtocol(CDP)通过Console域,允许我们以编程的方式来捕获和处理控制台中的日志输出,使我们能够进行更加自......