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

2024-04-13

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

这似乎是一个常见问题,提供了一种解决方案别处 https://stackoverflow.com/questions/29518159/unable-to-open-chrome-browser-using-selenium-webdriver-loading-unpacked-extensi is

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

...意味着扩展尚未加载,因为它已被管理员禁用。


根据讨论无法从以下位置加载扩展:...管理员禁止加载解压的扩展 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有价值*
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 从脚本内更改自动热键托盘图标

    如何从 Autohotkey 脚本中将托盘图标更改为 my ico 例如 当脚本暂停时 为此 我在托盘菜单中提出了自己的 暂停脚本 菜单项 SingleInstance ignore Menu Tray Tip AutoCase 0 11
  • 我们什么时候应该在 Django 中使用“db_index=True”?

    当我们应该定义db index True在模型字段上 我正在尝试优化应用程序并且我想了解更多信息db index 什么情况下我们应该使用它 文档说使用db index True在模型字段上用于加速查找 但在存储和内存方面略有缺点 我们应该使
  • 使用 QtWebEngine 将 C++ 对象暴露给 Qt 中的 Javascript

    使用 QtWebkit 可以通过以下方式将 C 对象公开给 JavascriptQWebFrame addToJavaScriptWindowObject如中所述https stackoverflow com a 20685002 5959
  • Android Espresso 单击按钮时出现错误

    我正在尝试使用 espresso 框架为 Android 应用程序编写一些 UI 测试 现在我只是检查启动屏幕上是否存在所有元素 然后尝试单击登录按钮 单击按钮时 测试由于错误而失败 我似乎无法理解为什么会发生这种情况 我的测试代码是 Ru
  • Qt 布局,在小部件大小更改后调整到最小大小

    基本上我有一个QGridLayout里面有一些小部件 最重要的是 2 个标签 我用它们将图像绘制到屏幕上 好吧 如果用户愿意 他可以更改传入图像的分辨率 从而强制标签调整大小 我们假设标签的初始大小是320x240 用户将 VideoMod
  • bash:gitolite:找不到命令

    我正在尝试使用 Gitolite 在 Gitlab 中创建一个新分支 我完成安装步骤 当我遇到 设置 gitolite 部分时 我遇到了麻烦 我跟着这个link http sitaramc github com gitolite setup
  • 如何在 kubernetes 中将秘密标记为可选?

    来自文档 除非将秘密标记为可选 否则必须先创建秘密 然后再将其作为环境变量在 pod 中使用 引用不存在的 Secret 将阻止 pod 启动 如何将秘密标记为可选 您正在寻找的是 name ENV NAME valueFrom secre
  • 一些基本的 PHP 问题 [已关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我只是有一些基本的 php 问题来加深我对学习的理解 但我找不到简单的答案 我有一个 php ajax 应用程序 它生成 mysql
  • If else 在 Web 网格列中

    如何在 webgrid 列中添加条件 if else grid GetHtml tableStyle table table bordered columns grid Columns grid Column RealName Name g
  • View.post(),以及当Runnables被执行时

    我最初的问题是需要知道我的根的高度和宽度View这样我就可以进行程序化的布局更改 就我的目的而言 我不一定需要在onCreate 对于我来说 以编程方式添加我的孩子就足够了View根布局完成后 因此我很乐意使用onWindowFocusCh
  • SimpleIoC - 在缓存中找不到类型:Windows.UI.Xaml.Controls.Frame

    第一次由 SimpleIoC 实例化我的 ViewModel 时 我遇到了以下错误 我相信我已经按应有的方式设置了容器 但由于某种原因 我仍然收到以下错误 任何想法或帮助将非常感激 Microsoft Practices ServiceLo
  • svn 强制迁移

    我正在考虑将我们的 svn 代码库迁移到 perforce 看看谷歌搜索结果 我确实找到了两个具有相同功能的工具 P4转换ftp ftp perforce com pub perforce tools p4convert docs inde
  • java'assert'和'if(){}else exit;'之间的区别

    java和java有什么区别assert and if else exit 我可以用吗if else exit代替assert 也许有点谷歌 您应该记住的主要事情是 if else 语句应该用于程序流程控制 而assert 关键字应该仅用于
  • R闪亮:使用闪亮的JS从数据表中获取信息

    我想读出所有列名称以及它们在数据表中显示的顺序 由于不同的原因 我无法使用 stateSave 等选项 我对 JS 没有什么把握 但我确信用它可以完成 所以我需要你帮助我 我尝试过类似的代码片段 datatable data callbac
  • React 错误:目标容器不是 DOM 元素

    我刚刚开始使用 React 所以这可能是一个非常简单的错误 但我们开始吧 我的html代码非常简单 load staticfiles
  • PLS-00103:遇到符号“;”当预期出现以下情况之一时:

    我正在尝试插入用户安全问题的答案 以用于密码重置功能 Ellucian 横幅 v8 提供了一个用于运行此 API 的 API 我对他们的 API 非常陌生 从下面的错误消息来看 我还远远没有正确运行它 任何帮助表示赞赏 我尝试在 Oracl
  • 自定义字符串查询操作的 Linq to NHibernate 可扩展性?

    我希望能够在 NHibernate Linq 表达式中使用自定义字符串查询 举例来说 这只是一个例子 我希望能够选择包含属性的实体 该属性是特定字符串的字谜 var myEntities EntityRepository AllEntiti
  • Keystore getEntry 在 Android 9 上返回 NULL

    c我已对存储在 Android 密钥库中的登录密码进行了加密和解密 在 Android 9 上 我观察到应用程序在尝试解密密码时崩溃 我无法重现它 但拥有 Pixel 3 的用户是崩溃的设备之一 下面是我如何从密钥库解密密码 private
  • Java 和/C++ 在多线程方面的差异

    我读过一些提示 多线程实现很大程度上取决于您正在使用的目标操作系统 操作系统最终提供了多线程能力 比如Linux有POSIX标准实现 而windows32有另一种方式 但我想知道编程语言水平的主要不同 C似乎为同步提供了更多选择 例如互斥锁
  • 如何使用 dql 从数据表中获取唯一值?

    我有一个表 其中有一列存储了各种值 我想使用 dql 从该表中检索唯一值 Doctrine Query create gt select rec school gt from Records rec gt where rec city ci

随机推荐