如何在Selenium中使用Python加载Chrome驱动程序中的扩展程序

4

我尝试了很多次使用Browsec扩展打开Chrome浏览器,但都失败了。以下是我最近尝试的方法 -

# Configure the necessary command-line option.
options = webdriver.ChromeOptions()
options.add_argument(r'--load- 
extension=C:\Users\lap0042\AppData\Local\Google\Chrome\User 
Data\Default\Extensions\omghfjlpggmjjaagoclmmobgdodcjboh')

# Initalize the driver with the appropriate options.
driver = webdriver.Chrome(chrome_options=options)

driver.get("http://stackoverflow.com")

这会导致错误“无法从中加载扩展名。已丢失或无法读取清单文件”。

在搜索此错误后,我发现Manifest.json文件应重命名为manifest.json.txt,但执行此操作仍导致相同的错误。

任何帮助将不胜感激。

enter image description here

5个回答

6
要使用任何扩展程序打开Chrome浏览器,您需要通过chrome.options类的实例使用add_extension()方法,并可以使用以下解决方案:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_extension(r'C:\path\to\extension.crx')
driver = webdriver.Chrome(chrome_options=chrome_options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
driver.get('https://www.google.co.in')
print("Page Title is : %s" %driver.title)
driver.quit()

参考文献

相关文档可以在以下链接中找到:

以下是一些相关讨论:


谢谢DebanjanB,这确实在Chrome中添加了扩展,但是它被禁用了。有没有任何浏览器可以打开已启用的扩展?或者最好的方法是启用扩展,以便可以使用它? - user3121891
@user3121891,您所说的“但已禁用”指的是什么,请查看我在答案中添加的文档以供参考。 - undetected Selenium
我的意思是扩展程序没有被激活。我希望当启动chromedriver时,它已经携带了激活的扩展程序。 - user3121891

1

如果我理解正确,您正在尝试将本地未打包的扩展加载到Selenium中

在这种情况下,以下代码应该可以工作

options = options()
options.add_argument("--load-extension=" + unpackedExtensionPath)

更好的选择是将您的扩展打包成一个 crx 文件。

0
使用此代码获取扩展。
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

ChromeOptions options = new ChromeOptions();
options.addExtensions(new File("/pathtoChromeextension.crx")); //adding 
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
ChromeDriver driver = new ChromeDriver(capabilities);

使用以下内容获取 CRX 文件 http://crxextractor.com/,其中扩展 ID 为 omghfjlpggmjjaagoclmmobgdodcjboh。

感谢Prany的帮助。我正在尝试找到Browsec或任何好的VPN插件的CRX,但还没有成功。当我尝试添加带有扩展ID的文件时,链接http://crxextractor.com上的应用程序不显示任何CRX。实际上,在扩展ID的文件夹中没有.CRX文件。您能帮忙找到任何好的VPN插件的CRX吗? - user3121891
好的,我已经提取了.crx文件。现在你能否确认上面的代码是用于Python 3的?因为它显示错误。 - user3121891
@user3121891 - 你是否在顶部添加了以下内容 - 'from selenium.webdriver.chrome.options import Options' 和 'from selenium.webdriver.common.desired_capabilities import DesiredCapabilities' - Prany
我认为你分享的脚本是针对Java的,我正在寻找Python。 - user3121891
Prany。这不是Python 3的正确语法,因为运行此代码会出现许多语法错误。 - user3121891

0
据我所知,最简单的答案是 - 在您引用的位置的子文件夹中清单(例如3.28.2_0'或扩展的最新版本...)

这假定您正在使用'options.add_argument('--load-extension=')...

对于options.add_extension('reference crx file .crx')


可能是重复的问题,与 https://stackoverflow.com/a/66514495/13607672 相同。 - JB-007
(实际上,正确的答案就是我上面说的 - 这个人只需要包含子文件夹名称在扩展路径中) - JB-007

-1

对于Python,您需要正确的路径来访问manifest.json文件

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

path = os.path.dirname(r"C:\temp\mdnleldcmiljblolnjhpnblkcekpdkpa\19.5.1.10_0\manifest.json")

options = Options()
options.add_argument(f"--load-extension={path}")
driver = webdriver.Chrome(options=options)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接