使用扩展名为(.crx文件)的Python运行Selenium WebDriver

2024-09-27 02:15:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我去Chrome Extension Downloader查了“Adblock-Plus\uv1.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',尝试使用创建的.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()会话,然后手动转到chrome://extensions/,我可以物理地拖放安装同一个.crx文件。

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

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

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

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

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打开时,它似乎还记得它以前的位置,但是没有更多,没有书签,没有扩展,没有任何东西。


Tags: 文件add消息driverextensionpluschromeoptions
2条回答

只需在程序中添加这一行

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)

从我肤浅的经验来看,问题在于load-extesion参数,而不是您的代码,因为我在测试非Chrome Web Store的扩展时遇到了同样的问题。 我通过安装带有Drag & Drop的扩展并仅使用--user-data-dir参数来解决这个问题。

这对我和C#和Chrome33都有效,我知道这听起来很脆弱,但它对我已经有效了几个月,所以我希望它能帮助我。

相关问题 更多 >

    热门问题