python - 使用带有扩展名(.crx 文件)的 Python 运行 Selenium WebDriver

标签 python google-chrome google-chrome-extension selenium-webdriver

我去了Chrome Extension Downloader获取“Adblock-Plus_v1.4.1”的 .crx 文件。

我把它放到我正在工作的目录中,然后运行:

from selenium import webdriver

chop = webdriver.ChromeOptions()
chop.add_extension('Adblock-Plus_v1.4.1.crx')
driver = webdriver.Chrome(chrome_options = chop)

它完全承认它的存在,但它给了我一个看起来像 ChromeDriver.exe 风格的消息:

ERROR:extension_error_reporter.cc(56)] Extension error: Package is invalid: 'CRX_PUBLIC_KEY_INVALID'.

然后最终是一个 webdriver 异常:

selenium.common.exceptions.WebDriverException: Message: u'Extension could not be installed'

我几乎 100% 确定我的代码没有任何问题,因为它在抛出异常之前首先放置了 ChromeDriver 类型的消息。

我还尝试通过转到 'C:\Documents and Settings\\*UserName*\Local Settings\Application Data\Google\Chrome\User Data\Default\Extensions' 自行打包它在打开开发者模式的 chrome://extensions/ 上,尝试使用创建的 .crx 并得到完全相同的错误消息

我也尝试了另一种方式:

chop = webdriver.ChromeOptions()
chop.add_argument('--load_extension=Adblock-Plus_v1.4.1.crx')
driver = webdriver.Chrome(chrome_options = chop)

这不会导致异常甚至 Chrome 驱动程序错误,但如果我手动转到 chrome://extensions/ 它不会说扩展已加载...

我认为我的问题与实际的 .crx 文件本身有关。由于错误消息的性质...但与此同时,我不确定,因为如果我生成 webdriver.Chrome() session ,然后手动转到 chrome://extensions/ 我可以拖放安装相同的 .crx 文件。

编辑:我意识到我实际上并没有问问题所以这里是:

我做错了什么?为什么我不能加载这个 chrome 扩展?是我的代码,还是 .crx 文件本身?

更新:@Pat Meeker 我已经试过了,但是我在从 java 到 python 的转换中丢失了一些东西

capability = webdriver.DesiredCapabilities.CHROME 返回一个字典,其中包含我在 i 中的所有参数,所以我很确定我需要做的唯一部分是添加参数。

options = webdriver.ChromeOptions()
options.add_argument('--user-data-dir=C:/Users/USER_NAME/AppData/Local/Google/Chrome/User Data/Default/')

这就是我现在拥有的,每当我尝试 driver = webdriver.Chrome(chrome_options=options) chrome 打开时,它似乎记得它之前的位置,但仅此而已,没有书签,没有扩展,什么都没有。

最佳答案

只需在您的程序中添加这一行

from selenium.webdriver.chrome.options import Options 它会工作...

像这样

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chop = webdriver.ChromeOptions()
chop.add_extension('Adblock-Plus_v1.4.1.crx')
driver = webdriver.Chrome(chrome_options = chop)

关于python - 使用带有扩展名(.crx 文件)的 Python 运行 Selenium WebDriver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16800689/

相关文章:

javascript - window.onload 在 Firefox+Greasemonkey 脚本中有效,但在 Chrome 用户脚本中无效?

javascript - Chrome扩展,如何排除chrome ://URIs in manifest. json

javascript - Chrome 扩展 :How to show background image in new Tab

python - 如何将整数添加到列表中的某些数字?

python - 高效查找并替换模式 'n' +(辅音)

javascript - 检查用户是否已经将 PWA 安装到 Chrome 的主屏幕?

javascript - 如何在使用存储关闭 chrome 扩展弹出窗口后保留更改

python - Ipython 更改解释器?

python - 为什么 str(float) 在 Python 3 中返回的位数比 Python 2 多?

css - 无法在 Angular cli 新元素中加载样式