首页 > 解决方案 > 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 获得的文件。

希望有人可以阐明这一点?

标签: python-3.xseleniumselenium-webdrivergoogle-chrome-extensionxvfb

解决方案


推荐阅读