加载扩展无法从“C:\.”加载扩展时出错。\本地\临时\scoped_dir6312_32763\内部'。已禁用加载解压缩的扩展

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

加载扩展插件时出错

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

是否要重试?

是 否

单击“是”可以运行测试。

我不确定为什么我会收到此对话框提示,

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

  1. 已将 chrome 驱动程序替换为最新版本。
  2. 在我的脚本中添加了以下代码:

    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();
}

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


答案 1

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

    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


答案 2

此错误消息...

加载扩展插件时出错

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

是否要重试?

是 否

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

根据问题 1749:无法从以下位置加载扩展:...管理员ChromeDriver禁用了未打包扩展程序的加载ChromeDriver使用Chrome自动化扩展程序来自动执行各种功能,例如窗口大小,窗口定位等。

无法加载扩展..”弹出窗口表示尚未加载此扩展。如果您手动关闭弹出窗口,浏览器将正常运行,ChromeDriver命令将继续按预期工作。但在这种情况下,如果您尝试执行窗口大小调整或窗口重新定位命令,它将抛出一个错误作为未知错误:无法获得自动化扩展

直到ChromeDriver v2.28每当组织管理策略禁止扩展时,绕过限制用户使用参数如下:disable-extensions

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

它完美地工作了。

ChromeDriver v2.28 之后,每当测试通过标志时,ChromeDriver 都会隐式传递禁用扩展插件,而禁用扩展程序又会加载 Chrome 自动化扩展程序。此扩展程序可帮助Chromedriver执行窗口大小调整和窗口重新定位操作。disable-extensions

因此,如果您的组织管理策略阻止扩展,则弹出窗口的显示 无法从以下位置加载扩展:...加载解压缩的扩展是预期行为。

这个问题依赖于硒对无头的支持

或者,您可以将 useAutomationExtension 功能设置为如下所示:false

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

此功能反转将有助于不加载 Chrome 自动化扩展程序,并且不会显示无法加载扩展程序弹出窗口。但是,如果没有Chrome自动化扩展程序,您将无法执行任何窗口大小调整/定位操作。

现在,Selenium对无头解决方案的支持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,请参阅此讨论

另类

其他一些替代方案是:

  • 注册表项添加到白名单ExtensionInstallWhitelist
  • 删除包含字符串项 1注册表项,该注册表项具有值ExtensionInstallBlacklist*

推荐