加载扩展时出错无法从“C:\..\Local\Temp\scoped_dir6312_32763\internal”加载扩展。已禁用加载未打包的扩展

Posted

技术标签:

【中文标题】加载扩展时出错无法从“C:\\..\\Local\\Temp\\scoped_dir6312_32763\\internal”加载扩展。已禁用加载未打包的扩展【英文标题】:Error Loading Extension Could not load extension from 'C:\..\Local\Temp\scoped_dir6312_32763\internal'. Loading of unpacked extensions is disabled加载扩展时出错无法从“C:\..\Local\Temp\scoped_dir6312_32763\internal”加载扩展。已禁用加载未打包的扩展 【发布时间】:2017-09-20 03:11:55 【问题描述】:

当我运行我的 webdriver 脚本时,我会收到一个确认对话框,其中包含以下消息:

加载扩展出错

无法从“C:\Users\username\AppData\Local\Temp\scoped_dir6312_32763\internal”加载扩展。管理员禁止加载解压的扩展。

要重试吗?

是 否

点击“是”让测试运行。

我不知道为什么会提示这个对话框,

我已经尝试了下面提到的解决方法,但它们都不起作用:

    将 chrome 驱动程序替换为最新版本。

    在我的脚本中添加了以下代码:

    ChromeOptions options = new ChromeOptions();
    options.addArguments("no-sandbox");
    options.addArguments("disable-extensions");
    driver = new ChromeDriver(options);
    

下面是我的测试方法:

public void Login() throws IOException
    test = extent.startTest("Login");
    signInPage = new SignInPage(driver);
    signInPage.enterMailId();   
    String screenShotPath = GetScreenShot.capture(driver, "enterMailId");
    test.log(LogStatus.PASS, "Email id is entered successfully: " + test.addScreenCapture(screenShotPath));
    signInPage.enterpwd();
    //test.log(LogStatus.INFO, "Password is entered successfully");
    screenShotPath = GetScreenShot.capture(driver, "enterpwd");
    test.log(LogStatus.PASS, "Password is entered successfully: " + test.addScreenCapture(screenShotPath));
    signInPage.clickOnLogin();
    test.log(LogStatus.PASS, "User logged in successfully");

下面是调用浏览器的方法:

private  void initChromeBrowser()
    System.setProperty("webdriver.chrome.driver", userdir +"\\chromedriver.exe");
    ChromeOptions options = new ChromeOptions();
    options.addArguments("test-type");
    options.addArguments("no-sandbox");
    //Fix for cannot get automation extension
    options.addArguments("disable-extensions");
    options.addArguments("start-maximized");
    options.addArguments("--js-flags=--expose-gc");         
    options.addArguments("disable-plugins");
    options.addArguments("--enable-precise-memory-info"); 
    options.addArguments("--disable-popup-blocking");
    options.addArguments("--disable-default-apps");
    options.addArguments("test-type=browser");
    options.addArguments("disable-infobars");
    driver = new ChromeDriver(options);
    launchApp();

我是否应该在我的脚本中加入任何其他内容以防止出现该对话框。

【问题讨论】:

您使用的是哪个版本的 Selenium、驱动程序和浏览器?你的测试步骤是什么?什么对你有用?显示代码。你被困在哪里了? 【参考方案1】:

升级到 ChromeDriver v2.29 后,我遇到了同样的问题。我有 Chrome v58.0。它看起来像一个未解决的问题:https://bugs.chromium.org/p/chromedriver/issues/detail?id=639#c26

根据您的版本,YMMV,就我而言,我不得不降级到 ChromeDriver v2.27。

【讨论】:

谢谢,降级到 v2.27 解决了我的问题,但现在遇到以下错误:org.openqa.selenium.WebDriverException: unknown error: cannot get automation extension from unknown error: page could not be found: chrome-extension://aapnijgdinlhnhlmodcfapnahmbfebeb/_generated_background_page.html 对此有任何想法吗?【参考方案2】:

您可以将 useAutomationExtension 功能设置为 false。

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

此功能将有助于不加载 Chrome 自动化扩展程序。因此,“加载扩展失败”弹出窗口不会出现。

但请注意,如果没有 Chrome 自动化扩展程序,您将无法执行任何窗口大小调整/定位操作。

希望这会有所帮助!

来源:https://bugs.chromium.org/p/chromedriver/issues/detail?id=1749

【讨论】:

我们在哪里添加这段代码?我的 .side 文件中没有 C# 或 Java 代码 如果有人偶然发现这个正在寻找 WebdriverIO 配置,那么您可以在wdio.conf.jscapabilities 部分中进行此更改:browserName: 'chrome', 'goog:chromeOptions': "useAutomationExtension": false, 这个答案也适用于 NightwatchJS。在您的 nightwatch.json 配置文件中,执行:"test_settings":"default":"desiredCapabilities":"browserName":"chrome","goog:chromeOptions":"useAutomationExtension":false【参考方案3】:

如果你去chrome://version/你可以在命令下看到:

C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-background-networking --disable-client-side-phishing-detection --disable-default-apps --disable-extensions --disable-extensions-except="C:\Users\Inno3\AppData\Local\Temp\scoped_dir80288_6333\internal" --disable-hang-monitor --disable-popup-blocking --disable-prompt-on-repost --disable-sync --disable-web-resources --enable-automation --enable-logging --force-fieldtrials=SiteIsolationExtensions/Control --ignore-certificate-errors --log-level=0 --metrics-recording-only --no-first-run --password-store=basic --remote-debugging-port=12354 --safebrowsing-disable-auto-update --start-maximized --test-type=webdriver --use-mock-keychain --user-data-dir="C:\Users\Inno3\AppData\Local\Temp\scoped_dir80288_30914" --flag-switches-begin --flag-switches-end data:,

这就是它抛出错误的原因,我不知道它为什么会出错,可能是用户政策或 Chrome 更新?

--disable-extensions-except="C:\Users\Inno3\AppData\Local\Temp\scoped_dir80288_6333\internal"

我认为参数是 Selenium 添加的,您需要以下命令告诉 selenium 不要添加它。

在 C# 中:

chromeOptions = OpenQA.Selenium.Chrome.ChromeOptions();
chromeOptions.AddAdditionalCapability("useAutomationExtension", false);
river = new ChromeDriver(chromeOptions);
launchApp();

在 Java 中:

chromeOptions.AddAdditionalCapability("useAutomationExtension", false)

【讨论】:

这就像一个魅力!感谢您提供 C# 和 Java 的示例,因为其中一些答案不适用于我。 是的 - 对于 C# 上面的“chromeOptions.AddAdditionalCapability("useAutomationExtension", false);"是我所需要的,其他建议在 OpenQA.Selenium 场景中不起作用。谢谢。【参考方案4】:

//Set the system property for chrome browser location
				System.setProperty("webdriver.chrome.driver", Global.sChromeDriverPath);
				//Set the Chrome capabilities
				ChromeOptions options = new ChromeOptions();
			    options.addArguments("test-type");
			    options.addArguments("start-maximized");
			    options.addArguments("--js-flags=--expose-gc");
			    options.addArguments("--enable-precise-memory-info");
			    options.addArguments("--disable-popup-blocking");
			    options.addArguments("--disable-default-apps");
			    options.addArguments("--enable-automation");
			    options.addArguments("test-type=browser");
			    options.addArguments("disable-infobars");
			    options.addArguments("disable-extensions");
			    options.setExperimentalOption("useAutomationExtension", false);
			    Global.driver = new ChromeDriver(options);

【讨论】:

通过使用上述代码,您可以在 selenium 自动化 Chrome 驱动程序版本 - ChromeDriver 2.34 Chrome 浏览器版本 - 63.0.39 中成功禁用弹出窗口和午餐 chrome 驱动程序【参考方案5】:

我尝试了很多方法,例如在 Windows 注册表中删除 Chrome 黑名单的 * 条目(这是一个痛苦的 hack,因为公司组策略每周会撤销几次)。我终于想出了可行的解决方案。使用以下代码,“错误加载扩展”弹出窗口不再出现。

$options=    Evaluate    sys.modules['selenium.webdriver'].ChromeOptions()    sys, selenium.webdriver
Call Method    $options    add_argument    --start-maximized
Call Method    $options    add_experimental_option  useAutomationExtension  $False
Create WebDriver    Chrome    chrome_options=$options

【讨论】:

【参考方案6】:

以下代码适用于我的 chrome 驱动程序 2.41 和浏览器版本 68.0.3440.84

public class patCheck 

  WebDriver driver;

  @Test
  public void f() 

      System.setProperty("webdriver.chrome.driver", "C:\\Users\\shirish.nagar\\Work\\Selenium\\Web\\Drivers\\chromedriver.exe");

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

      driver.manage().window().maximize();
      driver.get("https://www.google.com");
  

成功调用chrome浏览器,没有弹出“正在加载解压的扩展被管理员禁用”

【讨论】:

【参考方案7】:
    ChromeOptions options = new ChromeOptions();
    System.setProperty("webdriver.chrome.driver", "C:\\drivers\\chromedriver.exe");

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

【讨论】:

虽然此代码 sn-p 可能是解决方案,但 including an explanation 确实有助于提高您的帖子质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。【参考方案8】:

此错误消息...

加载扩展出错

无法从“C:\Users\username\AppData\Local\Temp\scoped_dir6312_32763\internal”加载扩展。管理员禁止加载解压的扩展。

要重试吗?

是 否

...表示扩展程序未加载,因为它已被管理员禁用。

根据Issue 1749: Failed to load extention from: ... Loading of unpacked extensions is disabled by the administrator ChromeDriver 使用 Chrome 自动化扩展 来自动化各种功能,如窗口大小调整、窗口定位等。

Failed to load extension.. 弹窗表示此扩展尚未加载。如果您手动关闭弹出窗口,浏览器将正常运行,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 执行窗口大小调整和窗口重新定位操作。

因此,如果您的组织管理员政策阻止扩展,则显示弹出 Failed to load extension from: ... Loading of unpacked extensions 是预期的行为。

这个问题依赖于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 将不再需要此扩展程序,您不应该看到此错误/弹出窗口。

解决方案

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

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

另类

其他一些选择是:

注册表项 ExtensionInstallWhitelist 添加到白名单 删除 注册表项 ExtensionInstallBlacklist 包含字符串键 1 和值 *

【讨论】:

删除注册表项 ExtensionInstallBlacklist,其中包含一个值为 * 的字符串键 1,成功!谢谢【参考方案9】:

以下代码对我有用:

将 useAutomationExtension 设置为 false

options.setExperimentalOption("useAutomationExtension", false);

完整代码:

    System.setProperty("webdriver.chrome.driver", "C:\\Selenium Drivers\\chromedriver.exe");
    ChromeOptions options = new ChromeOptions();

    DesiredCapabilities capabilities = DesiredCapabilities.chrome();
    capabilities.setAcceptInsecureCerts(true);
    options.merge(capabilities);
    options.addArguments("--test-type");
    options.addArguments("start-maximized");
    options.addArguments("--js-flags=--expose-gc");
    options.addArguments("--enable-precise-memory-info");
    options.addArguments("--disable-popup-blocking");
    options.addArguments("--disable-default-apps");
    options.addArguments("--enable-automation");
    options.addArguments("disable-extensions");
    options.setExperimentalOption("useAutomationExtension", false);
    options.addArguments("--disable-dev-shm-usage");
    options.addArguments("--no-sandbox");
    options.addArguments("disable-infobars");
    driver = new ChromeDriver(options);
    driver.get("https://www.google.com/");

【讨论】:

【参考方案10】:

在我的公司,我们有一个 GPO,它使用 ExtensionInstallBacklist 阻止 chrome 上的所有扩展。 因此,为了避免这种情况,我们将阻止的扩展注册表项从 *(全部)更改为随机值(foobar)。

为此,您可以使用以下内容创建一个 .reg 文件:

Windows 注册表编辑器版本 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\ExtensionInstallBlacklist] "1"="拉拉"

【讨论】:

【参考方案11】:

下面的代码适用于我添加 - options.setExperimentalOption("useAutomationExtension", false) : ...

System.setProperty("webdriver.chrome.driver", "chromedriver path"); ChromeOptions 选项 = new ChromeOptions(); options.addArguments("test-type"); options.addArguments("start-maximized"); options.addArguments("--js-flags=--expose-gc"); options.addArguments("--enable-precise-memory-info"); options.addArguments("--disable-popup-blocking"); options.addArguments("--disable-default-apps"); options.addArguments("--enable-automation"); options.addArguments("test-type=browser"); options.addArguments("disable-infobars"); options.addArguments("disable-extensions"); options.setExperimentalOption("useAutomationExtension", false); driver.new ChromeDriver(options); driver.get(你的网址);

【讨论】:

以上是关于加载扩展时出错无法从“C:\..\Local\Temp\scoped_dir6312_32763\internal”加载扩展。已禁用加载未打包的扩展的主要内容,如果未能解决你的问题,请参考以下文章

FabricJS - 从 JSON 加载 Canvas 时出错

docker compose:加载共享库时出错:libz.so.1:无法从共享对象映射段:不允许操作

在升级到 PHP 5.4.33 的 Centos VPS 上安装 mcrypt 扩展时出错

从ionic2中的资产文件夹加载字体时出错

将图像从Firebase加载到我的表视图时出错

clang:加载共享库时出错:libtinfo.so.5:无法打开共享对象文件:没有这样的文件或目录