这个弹出窗口:
错误消息为...
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
...意味着扩展尚未加载,因为它已被管理员禁用。
根据讨论无法从以下位置加载扩展:...管理员禁止加载解压的扩展 https://bugs.chromium.org/p/chromedriver/issues/detail?id=1749 Chrome驱动程序 uses Chrome 自动化扩展用于自动化各种功能,如窗口大小、窗口定位等。
The 无法加载扩展..弹出窗口表示此扩展尚未加载。如果您手动关闭弹出窗口,浏览器将正常运行并且Chrome驱动程序命令将继续按预期工作。但在这种情况下,如果您尝试执行窗口调整大小或窗口重新定位命令,它将抛出错误,如下所示unknown error: cannot get automation extension
.
背景
Till Chrome 驱动程序 v2.28每当组织管理策略禁止扩展时,为了绕过限制,用户使用了该参数disable-extensions
如下:
ChromeOptions options = new ChromeOptions();
options.addArguments("--disable-extensions");
WebDriver driver = new ChromeDriver(options);
而且效果非常完美。
Chrome 驱动程序 v2.28从此以后,每当disable-extensions
标志通过测试,Chrome驱动程序隐式传递disable-extensions-except
标志依次加载Chrome 自动化扩展。此扩展可帮助 Chromedriver 执行窗口大小调整和窗口重新定位操作。
因此,如果您的组织管理策略阻止扩展,则显示弹出窗口无法从以下位置加载扩展:...加载解压的扩展是一种预期行为。
这个问题依赖于Selenium 对无头的支持 https://bugs.chromium.org/p/chromium/issues/detail?id=604324.
解决办法
作为替代方案,您可以设置useAutomationExtension
能力false
如下:
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("useAutomationExtension", false);
WebDriver driver = new ChromeDriver(options);
此功能反过来将有助于不加载Chrome 自动化扩展程序 and Failed to load extension
弹出窗口不会出现。但是,如果没有以下命令,您将无法执行任何窗口大小调整/定位操作Chrome 自动化扩展.
Now, Selenium 对无头的支持 https://bugs.chromium.org/p/chromium/issues/detail?id=604324正在解决Chrome驱动程序将不再需要此扩展,并且您不应该看到此错误/弹出窗口。
Solution
最简单的解决方案是使用最新版本Chrome驱动程序 and Chrome以下任意一项的组合:
- 如果您正在使用Chrome 版本 73,请下载
ChromeDriver 73.0.3683.20
- 如果您正在使用Chrome 版本 72,请下载
ChromeDriver 2.46
or ChromeDriver 72.0.3626.69
- 如果您正在使用Chrome 版本 71,请下载
ChromeDriver 2.46
or ChromeDriver 71.0.3578.137
- 对于旧版本的 Chrome,请参阅此讨论 https://stackoverflow.com/questions/49796818/webdriverexception-message-service-usr-lib-chromium-browser-chromedriver-unex/49799791#49799791.
选择
其他一些替代方案是:
- Add the 注册表键值
ExtensionInstallWhitelist
列入白名单
- 去除注册表键值
ExtensionInstallBlacklist
包含字符串键1有价值*