我正在使用Selenium.WebDriver.ChomeDriver
v2.38.0和Chrome
v66.0.3359.117(官方版)。
要继续讨论,我将提供示例扩展。对于这篇文章,我将使用Ghostery - Privacy Ad Blocker
v8.1.2。
使用C#我加载扩展crx文件,如下所示:(跳过我创建crx的步骤)
var options = new ChromeOptions();
options.AddExtension(workFolder + @"\Chrome32\extensions\8.1.2_0.crx");
var driver = new ChromeDriver(options);
哪个效果很好:Ghostery会加载它的默认设置。不幸的是,禁用了所有拦截器。
切换回我的桌面并手动打开Chrome - 我看到它确实加载了我保存的设置(所有内容都被Ghostery阻止)。这告诉我,不知怎的,我需要以编程方式加载保存的设置。我非常肯定,在我的手动浏览过程中,Chrome可以执行此操作,因为它从C:\Users\USERNAME\AppData\Local\Google\Chrome\User Data\Default
加载了我的Chrome用户个人资料
我已经知道我可以使用
直接加载此用户个人资料options.AddArgument("user-data-dir=" + @"C:\Users\USERNAME\AppData\Local\Google\Chrome\User Data\Default");
但我不想使用该个人资料。它是70MB大,并且有很多与我相关的其他好东西,我不想使用它。
相反,我想以编程方式加载已保存的扩展程序设置,或者以某种方式将它们保存在将为我加载的位置。窥探,我看到用户配置文件中有一个Extension State
文件夹:
我的预感是,必须有一种方法以Selenium的方式加载这些扩展设置吗?