Selenium chrome headless模式下加载扩展的问题

这篇具有很好参考价值的文章主要介绍了Selenium chrome headless模式下加载扩展的问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

引言

Selenium headless是比较常用的自动化测试手段,但是在很长一段时间无法加载扩展。本文将介绍Selenium chrome如何加载扩展以及headless模式下加载扩展的问题及解决方式。

加载扩展

chrome_option = webdriver.ChromeOptions()
# 方式一
chrome_option.add_argument("--user-data-dir="+plugin_path)
# 方式二
chrome_options.add_extension(plugin_path)
# 方式三
chrome_options.add_argument('load-extension='+plugin_path)

推荐使用第三种方式。
另外chrome安装的插件在C:\Users(username)\AppData\Local\Google\Chrome\User Data\Default\Extensions 下可找到

headless模式下加载插件失败

在正常模式下加载插件是运行正常的,然而切换到headless之后,加载的插件可能无法运行。
在网上找了一圈资料,概括起来就是selenium chrome是不支持headless模式下加载插件的。

原因

翻了一下stackoverflow,里面有chromium的开发提到:
We’ve decided against implementing extension support in headless mode for now because supporting all the required features is rather complex.
大致是headless模式支持插件必需的特性相当复杂。

另外一位chromium的开发更加细致地说明了这一点:

  1. A lot of extension APIs are specific to non-headless browsers, so can’t be supported in headless chrome. 很多插件的api是针对有界面的浏览器的,因此headless chrome难以支持插件。
  2. Of the APIs we could feasibly support, only parts are implemented in such a way that we can currently reuse them for headless chrome. 在可以支持的api中,只有部分实现的方式是目前可以在无头chrome中重用它们。(换言之就是大部分还没能做到重用)
  3. Changing this requires a lot of refactoring that doesn’t seem justified given the benefit we’d gain. 支持这一特性需要大量的重构,不合理(我们又不996,😀)。

最新方式

上述提到的原因还是在2020年的。都2023年了,foxfire都老早支持headless加载插件了,不会chromiun还没有实现吧。
果然,在这篇官方博客中,新的headless被提出。即

  • before
chrome_options = ChromeOptions()
chrome_options.headless = True
driver = webdriver.Chrome(options=options)
driver.get('http://selenium.dev')
driver.quit()
  • after
chrome_options = ChromeOptions()
chrome_options.add_argument("--headless=new")
driver = webdriver.Chrome(options=options)
driver.get('http://selenium.dev')
driver.quit()

总结

如果你的代码使用headless无法正常加载插件,检查下代码中的headless配置,被将其设置为最新的方式。文章来源地址https://www.toymoban.com/news/detail-635973.html

chrome_options.add_argument("--headless=new")

到了这里,关于Selenium chrome headless模式下加载扩展的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • selenium.chrome怎么写扩展拦截或转发请求?

    Selenium WebDriver 是一组开源 API,用于自动测试 Web 应用程序,利用它可以通过代码来控制chrome浏览器! 有时候我们需要mock接口的返回,或者拦截和转发请求,今天就来实现这个功能。 代码已开源: https://github.com/yuzd/OpenQA.Selenium.Chrome.Fiddler nuget OpenQA.Selenium.Chrome.Fiddler 开始co

    2024年02月09日
    浏览(18)
  • Python selenium无界面headless

    视频版教程:一天掌握python爬虫【基础篇】 涵盖 requests、beautifulsoup、selenium Chrome-headless 模式, Google 针对 Chrome 浏览器 59版 新增加的一种模式,可以让你不打开UI界面的情况下使用 Chrome 浏览器,所以运行效果与 Chrome 保持完美一致,因此速度快与要打开界面的selenium,其使用

    2024年02月05日
    浏览(16)
  • 解决selenium使用webdriver.Chrome()报错的问题

    谷歌驱动下载地址: https://sites.google.com/a/chromium.org/chromedriver/home   运行成功(打开浏览器显示chrome正在受自动化软件测试的控制就代表成功):  找到def __init__(self, executable_path=\\\"chromedriver\\\", port=0, 修改executable_path=\\\"chromedriver\\\" 为executable_path=\\\"chromedriver驱动的路径\\\"   修改成功后

    2024年02月11日
    浏览(28)
  • 解决selenium打开Chrome浏览器自动退出的问题

    好不容易安装好selenium和对应的浏览器驱动器后终于可以运行程序了,结果发现一运行程序后浏览器打开就自动退出了,但是我在Python代码中并没有写driver.quit()方法,上网查了查发现原来是我的selenium版本是4.8.2的,selenium升级到版本4.7.2后,会出现这个浏览器自动退出的问题

    2024年02月11日
    浏览(35)
  • 【Selenium】chromedriver新版本与Chrome自动更新版本不匹配问题

    python代码运行出现如下错误:This version of ChromeDriver only supports Chrome version 114 Current browser version is 116.0.5845.141 with binary path C:Program FilesGoogleChromeApplicationchrome.exe 解决方案: 1.查看当前Google浏览器版本:版本 116.0.5845.141(正式版本) (64 位) 2.下载对应的浏览器驱动chromed

    2024年02月08日
    浏览(27)
  • 【Selenium】chromedriver最新版本与Chrome自动更新版本不匹配问题

    使用Selenium时需要下载chromedriver 1、首先查看我的Chrome浏览器版本已自动更新到116: 2、查找与之对应的chromedriver版本:http://chromedriver.storage.googleapis.com/index.html 发现最新版本只到114: chromedriver与Chrome版本不匹配且没有匹配最新Chrome版本的chromedriver。 因此考虑降级Chrome版本且

    2024年02月16日
    浏览(37)
  • 解决 Docker + selenium + chromedriver + chrome 会出现僵尸进程的问题

    在docker里,使用selenium爬虫,  webdriver quit 后,会产生很多僵尸进程。 docker run  - it  - v / home / blackip :/ home / blackips /    selenium : 1.0   python3 linux_black_ip . py top 查看僵尸进程: ps -ef | grep defunct 查看僵尸进程: 僵尸进程的父进程是python3。 看了下chrome运行时的状况,发现开始

    2023年04月24日
    浏览(17)
  • python selenium playwright库使用教程 破解网页防止开发者模式 截取数据请求 隐藏chrome

    下载 chromedriver的版本一定要与Chrome的版本一致,不然就不起作用。 有两个下载地址: 1、 http://chromedriver.storage.googleapis.com/index.html 2、 CNPM Binaries Mirror 当然,你首先需要查看你的Chrome版本,在浏览器中输入chrome://version/  放chromedriver在chrome安装目录  默认目录一般为:C:Pro

    2023年04月25日
    浏览(20)
  • Python之selenium关于Chrome驱动位置,闪退的问题和安装路径

    零、查看Python的安装路径 一、Chromedriver放置的位置 二、浏览器闪退   背景:之前由于Chrome浏览器自动升级后,导致驱动与浏览器不匹配,自己也不知道问题出在哪儿,花费了我大量时间去排查,所以接下来记录一些。 使用的是selenium v 4.1.0版本 下载的Chromedriver要与浏览器的

    2024年02月05日
    浏览(58)
  • linux centos安装google chrome浏览器使用headless无头模式 制作docker镜像

    chromedriver 驱动下载地址: https://npm.taobao.org/mirrors/chromedriver/ linux centos安装google chrome浏览器使用headless无头模式 用java开发爬虫,或者需要java操作控制浏览器来渲染页面,抓取页面元素,都需要在linux安装google chrome浏览器,然后就可以通过chrome driver来连接操作chrome浏览器了,

    2024年02月09日
    浏览(23)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包