无法从 scoped_dir6312_32763/internal 加载扩展。管理员使用 ChromeDriver Selenium 禁止加载解压的扩展

Could not load extension from scoped_dir6312_32763/internal.Loading of unpacked extensions is disabled by the administrator with ChromeDriver Selenium

我使用 vue-cli 3 创建了一个项目,它会自动为我设置 e2ed 测试。当我尝试 运行 测试时,我从 chrome 得到一个弹出窗口,告诉我 "Loading of unpacked extensions is disabled by the administrator".

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

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

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

这个弹出窗口:

错误消息为...

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 extention from: ... Loading of unpacked extensions is disabled by the administrator ChromeDriver 使用 Chrome automation extension 进行自动化window 大小调整、window 定位等各种功能

加载扩展失败.. 弹出窗口表示此扩展尚未加载。如果您手动关闭弹出窗口,浏览器将正常运行并且 ChromeDriver 命令将继续按预期工作。但在这种情况下,如果您尝试执行 window 调整大小或 window 重新定位命令,它将抛出错误 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-extensions标志被测试通过,ChromeDriver 隐式传递 disable-extensions-except 标志,该标志依次加载 Chrome 自动化扩展 。此扩展帮助 Chrome 驱动程序执行 window 大小调整和 window 重新定位操作。

因此,如果您的组织管理策略阻止扩展,弹出窗口的显示无法从以下位置加载扩展:...加载解压的扩展 是预期的行为。

此问题依赖于 Selenium support for headless


解决方法

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

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

此功能反过来将有助于不加载 Chrome 自动化扩展 并且不会出现 Failed to load extension 弹出窗口.但是如果没有 Chrome 自动化扩展 .

,您将无法执行任何 window resizing/positioning 操作

现在,Selenium support for headless 正在解决 ChromeDriver 将不再需要此扩展,您不应该看到此 error/popup。

解决方案

最简单的解决方案是使用最新版本的 ChromeDriverChrome 的组合以下任一项:

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

备选

其他一些替代方案是:

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