Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x Python3-xvfb运行中的selenium-无法处理扩展_Python 3.x_Selenium_Selenium Webdriver_Google Chrome Extension_Xvfb - Fatal编程技术网

Python 3.x Python3-xvfb运行中的selenium-无法处理扩展

Python 3.x Python3-xvfb运行中的selenium-无法处理扩展,python-3.x,selenium,selenium-webdriver,google-chrome-extension,xvfb,Python 3.x,Selenium,Selenium Webdriver,Google Chrome Extension,Xvfb,我需要使用python3中的selenium模块,使用带有Chrome驱动程序的uBlock插件从网站自动提取信息。 我在远程机器上没有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 以下是我在远程计算机上配置

我需要使用
python3
中的
selenium
模块,使用带有Chrome驱动程序的uBlock插件从网站自动提取信息。 我在远程机器上没有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:

google-chrome --version
Google Chrome 86.0.4240.111
2-检查安装的
python3
selenium
I的版本:

python --version
Python 3.7.3

pip freeze
selenium==3.141.0
3-检查
xvfb运行版本:

apt-cache policy xvfb
2:1.20.4-1+deb10u1
4-配置了这些软件包后,我从此列表中获得了chromedriver_linux64.zip(下面的86.0.4240.22版本是与已安装的
谷歌chrome
相同的主要版本的最新版本):

5-为了能够使用Chrome的uBlock扩展,我需要安装一个能够生成其他已安装扩展的.crx存档文件的扩展。 为此,我使用了CRX提取器/下载器:

https://chrome.google.com/webstore/detail/crx-extractordownloader/ajkhmmldknmfjnmeedkbkkojgobmljda
6-使用扩展名后,我得到了要测试的
ublock.crx
文件

我在
chromedriver\u 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\u crx\u file\u path
的路径有效,并指向我从Chrome获得的文件

希望有人能对此有所了解?

并且它可以在你的“非远程”机器上运行?非远程是带有gnome的Ubuntu。使用此配置,我能够在“非远程”计算机上运行ublock.crx文件。在远程设备上,我可以在不使用扩展名的情况下启动驱动程序,但是当我包含它时,就会发生错误。这就是为什么我添加了所有关于操作系统和程序版本的信息。它可以在你的“非远程”机器上工作吗?非远程是带有gnome的Ubuntu。使用此配置,我能够在“非远程”计算机上运行ublock.crx文件。在远程设备上,我可以在不使用扩展名的情况下启动驱动程序,但是当我包含它时,就会发生错误。这就是为什么我添加了操作系统和程序版本的所有信息。
from selenium import webdriver

option = webdriver.ChromeOptions()
option.add_extension(ublock_crx_file_path)
driver = webdriver.Chrome(executable_path=driver_path, options=option)