java - 无法从 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 项目中实现相同的功能。但是,我不知道在哪里放置这个配置。
解决方案
此弹出窗口:
错误消息为...
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-extensions
flag 通过测试时,ChromeDriver 都会隐式传递disable-extensions-except
flag,这反过来会加载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将不再需要这个扩展,你不应该看到这个错误/弹出窗口。
解决方案
最简单的解决方案是使用最新版本的ChromeDriver和Chrome组合,其中之一是:
- 如果您使用的是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
项添加到白名单 - 删除包含字符串键1的注册表 键值
ExtensionInstallBlacklist
*
推荐阅读
- python - Python创建区域截图
- regex - 包括所有指定的扩展名,但具有扩展名的特定文件除外
- amazon-web-services - AWS Athena 和角色中的受信任实体
- excel - 在行中找到红色文本时的 Excel 条件格式
- pytorch - 如何在 ConvTranspose3d 之后获取 torch.Size([1, 3, 16, 112, 112]) 而不是 torch.Size([1, 3, 16, 64, 64])
- python - Python:无法让我的代码工作。我得到我的类未定义,或者我的调用未定义
- javascript - 仅当 devtools 打开时才包含渲染?
- r - 对函数进行逆向工程
- python - 添加列表的相邻元素
- html5-video - 为什么对 WebVTT 提示使用多个连字符?