use*_*878 16 java selenium google-chrome selenium-chromedriver chrome-automation-extension
当我运行我的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);
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
升级到ChromeDriver v2.29后,我遇到了同样的问题.我有Chrome v58.0.它看起来像一个悬而未决的问题:https: //bugs.chromium.org/p/chromedriver/issues/detail?id = 639#c26
根据您的版本,YMMV,在我的情况下,我不得不降级到ChromeDriver v2.27.
小智 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)
此错误消息...
加载扩展程序时出错
无法从“ 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将不再需要这个扩展,你不应该已经看到了这个错误/弹出。
最简单的解决方案是在以下任一情况下使用最新版本的ChromeDriver和Chrome组合:
ChromeDriver 73.0.3683.20ChromeDriver 2.46或ChromeDriver 72.0.3626.69ChromeDriver 2.46或ChromeDriver 71.0.3578.137其他一些替代方法是:
ExtensionInstallWhitelist到白名单ExtensionInstallBlacklist项*| 归档时间: |
|
| 查看次数: |
42161 次 |
| 最近记录: |