管理员禁用加载解压缩的扩展名

use*_*878 16 java selenium google-chrome selenium-chromedriver chrome-automation-extension

当我运行我的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);
    
    Run Code Online (Sandbox Code Playgroud)

以下是我的测试方法:

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");
}
Run Code Online (Sandbox Code Playgroud)

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

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();
}
Run Code Online (Sandbox Code Playgroud)

我可以在脚本中加入任何其他内容来阻止对话框.

小智 13

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

    ChromeOptions options = new ChromeOptions();
    options.setExperimentalOption("useAutomationExtension", false);
    WebDriver driver = new ChromeDriver(options);
Run Code Online (Sandbox Code Playgroud)

此功能有助于不加载Chrome Automation扩展程序.因此,不会出现"无法加载扩展名"弹出窗口.

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

希望这可以帮助!

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

  • 如果有人在寻找 WebdriverIO 配置时偶然发现这一点,那么您可以在“wdio.conf.js”中的“capability”部分进行此更改:“browserName: 'chrome', 'goog:chromeOptions': {"useAutomationExtension": false },` (2认同)

jer*_*nja 5

升级到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:未知错误:无法从未知错误中获取自动扩展:找不到页面:chrome-extension: // aapnijgdinlhnhlmodcfapnahmbfebeb/_generated_background_page.html`对此有何想法? (3认同)

小智 5

如果你去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();
Run Code Online (Sandbox Code Playgroud)

在 Java 中:

chromeOptions.AddAdditionalCapability("useAutomationExtension", false)
Run Code Online (Sandbox Code Playgroud)


Deb*_*anB 5

此错误消息...

加载扩展程序时出错

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

您想重试吗?

是否

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

根据问题1749:无法从以下位置加载扩展:...管理员禁止加载解压缩的扩展程序, 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);
Run Code Online (Sandbox Code Playgroud)

而且效果很好。

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

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

此问题取决于Selenium对headless的支持

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

ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("useAutomationExtension", false);
WebDriver driver = new ChromeDriver(options);
Run Code Online (Sandbox Code Playgroud)

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

现在,对于无头硒支持正在解决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*