使用Selenium chromeDriver打开chrome浏览器实例时,Chrome浏览器上安装的扩展程序丢失

时间:2013-05-13 21:30:55

标签: google-chrome-extension selenium-chromedriver

我在这里有一个特殊的问题。 当我通过chromeDriver打开chromeBrowser时,缺少预先安装的扩展程序。此外,应用程序扩展程序将从扩展文件夹(AppData \ Local \ Google \ Chrome \ User Data \ Default \ Extensions)中删除。

现在,当我手动打开Chrome浏览器时,扩展程序会出现在浏览器上,扩展文件夹中的apps文件夹(AppData \ Local \ Google \ Chrome \ User Data \ Default \ Extensions)也不会显示回来。

以下是chromedriver&的版本浏览器。 chromedriver版本:26.0.1383.0 chromebrowser:26.0.1410.64

请帮忙。

4 个答案:

答案 0 :(得分:8)

您必须安装要使用的每个扩展程序。在Selenium2 C#API中,它看起来像这样

var options = new ChromeOptions();
options.AddExtension(Path.GetFullPath("local/path/to/extension.crx"));
var driver = new ChromeDriver(options);

,扩展程序将在浏览器中。可以找到java的参考here。有关如何从Chrome商店获取扩展程序的.crx文件,请参阅this question

答案 1 :(得分:4)

这个答案可以在https://sites.google.com/a/chromium.org/chromedriver/extensions找到。 Chrome扩展程序可以打包或解压缩。打包扩展名是扩展名为.crx的单个文件。解包扩展是包含扩展名的目录,包括manifest.json文件。

要打包解压缩的扩展程序,请使用chrome://扩展程序中的“打包”按钮或使用Chrome:“chrome.exe --pack-extension = C:\ path \ to \ unpacked \ extension --pack-extension-key = C:\ myext.pem”。请参阅扩展文档以获取更加自动化的其他方法。要解压缩打包的扩展,只需解压缩文件(您可能需要将文件从.crx重命名为.zip,以便您的zip实用程序识别它)。 通过ChromeDriver安装扩展程序

打包(.crx文件)

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

解压缩(目录)

ChromeOptions options = new ChromeOptions();
options.addArguments("load-extension=/path/to/extension");
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
ChromeDriver driver = new ChromeDriver(capabilities);

答案 2 :(得分:2)

如果您希望在测试期间使用扩展程序,则需要使用定义此扩展的配置文件启动chrome,或者将扩展名作为所需属性提供给webdriver。通常,当您通过webdriver启动chrome时,chrome每次都以新的配置文件开始。

因此,如果您要在测试镶边中加载扩展程序,请执行以下操作:

 DesiredCapabilities capabilities = DesiredCapabilities.chrome();
 capabilities.setCapability("chrome.switches", 
    Arrays.asList("--load-extension=/path/to/extension/directory"));
 WebDriver driver = new ChromeDriver(capabilities);

有关此事的更多信息可以在here

找到

答案 3 :(得分:0)

ChromeOptions选项=新的ChromeOptions();  options.AddAdditionalCapability(" excludeSwitches",new object [] {" disable-default-apps"});

 IWebDriver drv =新的ChromeDriver(选项);

可从webdriver .net bindings 2.40开始提供。