首页 > 解决方案 > 无法从 scoped_dir6312_32763/internal 加载扩展。管理员使用 ChromeDriver Selenium 禁用了加载解压扩展

问题描述

我使用 vue-cli 3 创建了一个项目,它会自动为我设置 e2ed 测试。当我尝试运行测试时,我从 chrome 收到一个弹出窗口,告诉我“管理员已禁用加载解压扩展”。

这似乎是一个常见问题,其他地方提供的一种解决方案是

ChromeOptions o = new ChromeOptions();
o.addArguments("disable-extensions");
o.addArguments("--start-maximized");
WebDriver driver = new ChromeDriver(o);

现在这是 Java 代码,但我认为有一种方法可以在 vue.js 项目中实现相同的功能。但是,我不知道在哪里放置这个配置。

标签: javaseleniumgoogle-chromeselenium-chromedriverchrome-automation-extension

解决方案


此弹出窗口:

扩展错误

错误消息为...

Error Loading Extension
Failed to load extension from: 'C:\Users\user_name\AppData\Local\Temp\scoped_dir6312_32763\internal'. Loading of unpacked extensions is disabled by the administrator.
OK

...表示扩展尚未加载,因为它已被管理员禁用。


根据讨论Failed to load extension from: ... 管理员禁用加载未打包的扩展 ChromeDriver使用Chrome 自动化扩展来自动执行各种功能,如窗口大小调整、窗口定位等。

加载扩展失败..弹出窗口表示该扩展尚未加载。如果您手动关闭弹出窗口,浏览器将正常运行,ChromeDriver命令将继续按预期工作。但在这种情况下,如果您尝试执行窗口大小调整或窗口重新定位命令,则会抛出错误,如unknown error: cannot get automation extension.


背景

直到ChromeDriver v2.28每当组织管理员策略禁止扩展,绕过限制用户使用disable-extensions如下参数:

ChromeOptions options = new ChromeOptions();
options.addArguments("--disable-extensions");
WebDriver driver = new ChromeDriver(options);

它工作得很好。

ChromeDriver v2.28以后,每当disable-extensionsflag 通过测试时,ChromeDriver 都会隐式传递disable-extensions-exceptflag,这反过来会加载Chrome 自动化扩展。此扩展帮助 Chromedriver 执行窗口大小调整和窗口重新定位操作。

因此,如果您的组织管理策略阻止扩展,则显示弹出窗口Failed to load extension from: ... 加载未打包的扩展是一种预期行为。

这个问题依赖于Selenium 对 headless 的支持


解决方法

作为替代方案,您可以将useAutomationExtension功能设置false为如下:

ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("useAutomationExtension", false);
WebDriver driver = new ChromeDriver(options);

此功能反过来将有助于不加载Chrome 自动化扩展并且Failed to load extension不会出现弹出窗口。但是如果没有Chrome 自动化扩展,您将无法执行任何窗口大小调整/定位操作。

现在,Selenium 对 headless 的支持被解决ChromeDriver将不再需要这个扩展,你不应该看到这个错误/弹出窗口。

解决方案

最简单的解决方案是使用最新版本的ChromeDriverChrome组合,其中之一是:

  • 如果您使用的是Chrome 版本 73,请下载ChromeDriver 73.0.3683.20
  • 如果您使用的是Chrome 版本 72,请下载ChromeDriver 2.46ChromeDriver 72.0.3626.69
  • 如果您使用的是Chrome 版本 71,请下载ChromeDriver 2.46ChromeDriver 71.0.3578.137
  • 对于旧版 Chrome,请参阅此讨论

选择

其他一些替代方案是:

  • 注册表 ExtensionInstallWhitelist项添加到白名单
  • 删除包含字符串键1的注册表 键值ExtensionInstallBlacklist*

推荐阅读