python-3.x - Python 3 - xvfb-run 上的 selenium - 无法处理扩展
问题描述
我需要使用 uBlock 插件和 Chrome 驱动程序selenium
使用Python 3
. 我在远程机器上没有 GUI 远程运行我的代码 - 因为我xvfb-run
用来模拟 Chrome 以特定窗口大小启动的桌面环境。
远程机器具有以下Debian
操作系统:
uname -a
Linux mem 4.19.0-10-amd64 #1 SMP Debian 4.19.132-1 (2020-07-24) x86_64 GNU/Linux
这些是我在远程机器上配置环境和代码所采取的步骤:
1 - 为了配置我的环境,我安装了这个版本的谷歌浏览器:
google-chrome --version
Google Chrome 86.0.4240.111
2 - 检查我安装Python 3
的版本:selenium
python --version
Python 3.7.3
pip freeze
selenium==3.141.0
3 - 检查xvfb-run
版本:
apt-cache policy xvfb
2:1.20.4-1+deb10u1
4 - 配置了这些包后,我chromedriver_linux64.zip
从这个列表中获得了(下面的版本 86.0.4240.22 是最新的,与已安装的主要版本相同google-chrome
):
https://chromedriver.storage.googleapis.com/index.html
https://chromedriver.storage.googleapis.com/index.html?path=86.0.4240.22/
5 - 为了能够使用 Chrome 的 uBlock 扩展,我需要安装一个能够生成其他已安装扩展的 .crx 存档文件的扩展。为此,我使用了 CRX 提取器/下载器:
https://chrome.google.com/webstore/detail/crx-extractordownloader/ajkhmmldknmfjnmeedkbkkojgobmljda
6 - 使用该扩展名后,我得到了我的ublock.crx
文件进行测试。
我设法在chromedriver_linux64.zip
没有扩展程序的情况下使用二进制文件来启动 Chrome 实例并进行一些基本的爬取。但是当我尝试ublock.crx
在我的代码中使用时,我遇到了一个异常。
代码是这样的:
这是产生的异常:
ublock.crx error
selenium.common.exceptions.SessionNotCreatedException: Message: session not
created: cannot process extension #1
from unknown error: cannot unzip
我从我的程序中启动它,如下所示:
from selenium import webdriver
option = webdriver.ChromeOptions()
option.add_extension(ublock_crx_file_path)
driver = webdriver.Chrome(executable_path=driver_path, options=option)
我已确保 的路径ublock_crx_file_path
有效并指向我从 Chrome 获得的文件。
希望有人可以阐明这一点?
解决方案
推荐阅读
- java - 两个日期之间的日差
- selenium - isDisplayed 方法出现错误?
- android - 评级明星从最后开始削减
- kubernetes - Kubespray:如何为一个节点添加多个 GlusterFS 磁盘卷设备
- python - Pandas:基于现有行的新行
- php - 有没有办法在 linux 服务器托管 shell_exec 函数的 php 中获取 pc 名称(主机名)
- asp.net-core - ASP.net Core Web API Swagger UI 版本字段 - 是否可以在代码中设置此值?
- python - python中一个变量的内容何时与另一个变量的内容保持不变
- go - COM 中的 UTF-16 字符串
- regex - 为什么 JFlex 拒绝 .+?(?=->)