当我运行我的webdriver脚本时,我收到一个确认对话框,其中包含以下消息:
加载扩展程序时出错
无法从'C:\ Users \ username \ AppData \ Local \ Temp \ scoped_dir6312_32763 \ internal'加载扩展程序。管理员禁用加载解压缩的扩展名。
你想重试吗?
是否
单击“是”可以运行测试。
我不确定为什么我会提示此对话框,
我已经尝试了下面提到的解决方法,但它们都没有工作:
在我的脚本中添加了以下代码:
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();
}
我的脚本中是否还有其他内容可以阻止对话框。
答案 0 :(得分:10)
您可以将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
答案 1 :(得分:5)
升级到ChromeDriver v2.29后,我遇到了同样的问题。我有Chrome v58.0。这看起来像一个悬而未决的问题:https://bugs.chromium.org/p/chromedriver/issues/detail?id=639#c26
根据您的版本,YMMV,在我的情况下,我不得不降级到ChromeDriver v2.27。
答案 2 :(得分:3)
此错误消息...
错误加载扩展程序
无法从'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自动化扩展来自动执行各种功能,例如窗口大小调整,窗口定位等。
加载扩展失败。弹出窗口表示尚未加载此扩展。如果您手动关闭弹出窗口,浏览器将正常运行, 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执行窗口大小调整和窗口重新定位操作。
因此,如果您的组织管理员策略阻止了扩展程序,则显示弹出窗口无法从以下位置加载扩展程序:...加载未打包的扩展程序是一种预期的行为。
此问题取决于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 组合:
ChromeDriver 73.0.3683.20
ChromeDriver 2.46
或 ChromeDriver 72.0.3626.69
ChromeDriver 2.46
或 ChromeDriver 71.0.3578.137
其他一些选择是:
ExtensionInstallWhitelist
添加到白名单ExtensionInstallBlacklist
,其中包含具有值 *
的字符串键 1
答案 3 :(得分:2)
如果你转到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)
答案 4 :(得分:2)
//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);
答案 5 :(得分:2)
以下代码对我来说适合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浏览器,而不会弹出“加载管理员禁用的解压缩扩展程序”的弹出窗口
答案 6 :(得分:1)
我尝试了一些诸如删除Windows注册表中的Chrome黑名单的*条目(这是一个痛苦的黑客,因为它将被公司组策略每周逆转几次)。我终于想出了可行的解决方案。使用以下代码,弹出的“错误加载扩展”不再显示。
${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}
答案 7 :(得分:1)
ChromeOptions options = new ChromeOptions();
System.setProperty("webdriver.chrome.driver", "C:\\drivers\\chromedriver.exe");
options.setExperimentalOption("useAutomationExtension", false);
driver = new ChromeDriver(options);
答案 8 :(得分:0)
以下代码对我有用:
将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/");
答案 9 :(得分:0)
在我的公司中,我们有一个GPO,可以使用ExtensionInstallBacklist阻止chrome上的所有扩展。 因此,为避免这种情况,我们将阻止扩展注册表项从*(全部)更改为随机值(foobar)。
为此,您可以创建具有以下内容的.reg文件:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\ExtensionInstallBlacklist] "1"="lala"
答案 10 :(得分:0)
下面的代码对我有用,另外添加了-options.setExperimentalOption(“ useAutomationExtension”,false): ...