我使用vue-cli 3创建了一个项目,该项目会自动为我设置e2ed测试。当我尝试运行测试时,从chrome浏览器弹出一个对话框,告诉我“管理员已禁用解压缩扩展的加载”。
这似乎是一个普遍的问题,elsewhere提供的一种解决方案是
ChromeOptions o = new ChromeOptions();
o.addArguments("disable-extensions");
o.addArguments("--start-maximized");
WebDriver driver = new ChromeDriver(o);
现在这是Java代码,但是我认为在vue.js项目中可以实现相同的目的。但是,我不知道将此配置放在何处。
答案 0 :(得分:2)
此弹出窗口:
,错误消息为...
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自动化扩展来自动执行各种功能,例如窗口大小调整,窗口定位等。
加载扩展失败。弹出窗口表示尚未加载此扩展。如果您手动关闭弹出窗口,浏览器将正常运行, 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-extensions
标志, ChromeDriver 隐式地通过 disable-extensions-except
标志,依次加载 Chrome自动化扩展。此扩展程序可帮助Chromedriver执行窗口大小调整和窗口重新定位操作。
因此,如果您的组织管理员策略阻止了扩展程序,则显示弹出窗口无法从以下位置加载扩展程序:...加载未打包的扩展程序是一种预期的行为。
此问题取决于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自动化扩展程序,您将无法执行任何窗口大小调整/定位操作。
现在,Selenium support for headless被解决的 ChromeDriver 将不再需要此扩展名,并且您不应该看到此错误/弹出窗口。
最简单的解决方案是在以下任意一种情况下使用最新版本的 ChromeDriver 和 Chrome 组合:
ChromeDriver 73.0.3683.20
ChromeDriver 2.46
或 ChromeDriver 72.0.3626.69
ChromeDriver 2.46
或 ChromeDriver 71.0.3578.137
其他一些选择是:
ExtensionInstallWhitelist
添加到白名单ExtensionInstallBlacklist
,其中包含具有值 *
的字符串键 1