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)