加载扩展时出错无法从“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.js
的capabilities
部分中进行此更改: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 将不再需要此扩展程序,您不应该看到此错误/弹出窗口。
解决方案
最简单的解决方案是使用最新版本的 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,请参阅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:无法从共享对象映射段:不允许操作