使用 Selenium ChromeDriver 如何加载保存的扩展设置?

sap*_*ket 5 c# selenium google-chrome-extension selenium-chromedriver

我正在使用Selenium.WebDriver.ChomeDriverv2.38.0 和Chromev66.0.3359.117(官方版本)。

为了继续讨论,我将提供示例扩展。对于这篇文章,我将使用Ghostery - Privacy Ad Blockerv8.1.2。

我使用 C# 加载扩展 crx 文件,如下所示:(跳过创建 crx 的步骤)

var options = new ChromeOptions();
options.AddExtension(workFolder + @"\Chrome32\extensions\8.1.2_0.crx");
var driver = new ChromeDriver(options);
Run Code Online (Sandbox Code Playgroud)

效果很好:Ghostery 加载到它的默认设置。不幸的是,所有阻止程序都被禁用。

切换回我的桌面并手动打开 Chrome - 我看到它确实加载了我保存的设置(所有被 Ghostery 阻止的设置)。这告诉我,我需要以某种方式以编程方式加载保存的设置。我相当确定在我手动浏览 Chrome 期间能够做到这一点,因为它加载了我的 Chrome 用户配置文件C:\Users\USERNAME\AppData\Local\Google\Chrome\User Data\Default

我已经知道我可以使用直接加载此用户配置文件

options.AddArgument("user-data-dir=" + @"C:\Users\USERNAME\AppData\Local\Google\Chrome\User Data\Default");
Run Code Online (Sandbox Code Playgroud)

但我不想使用该配置文件。它有 70MB 大,并且有很多我不想使用的与之相关的好东西。

相反,我想以编程方式加载保存的扩展设置,或者以某种方式将它们保存在一个可以为我加载的地方。窥探一圈,发现Extension State用户配置文件中有一个文件夹:

在此处输入图片说明

我的预感是必须有一种方法可以以 Selenium 方式加载这些扩展设置?

kal*_*iii 0

不确定扩展的当前状态存储在哪里,但您可以尝试编辑扩展文件。

为此,您需要将.crx文件提取到文件夹中,然后进行编辑。如果幸运的话,已经有一些.config或其他设置文件。

您还可以使用参数直接从文件夹加载扩展--load-extension=path/to/extension_directory