如何在运行 Selenium 脚本时禁用 chrome 浏览器中的身份验证弹出窗口

问题描述 投票:0回答:2

enter image description here通过第一个 URL,我单击“登录”(如图所示),这会导致我需要在其中输入凭据的另一个 URL。但在该页面之前,我看到浏览器生成了一个弹出窗口,Selenium 无法找到该弹出窗口。 enter image description here。我的chrome浏览器版本是61.0.3163.100(官方版本)(64位)

我尝试使用以下方法:

  1. Alert.dismiss()

  2. JavaScript

    ((JavascriptExecutor) driver).executeScript("window.confirm = function(msg) { return
    

    真实; }");

  3. 自动它

    WinWaitActive("Windows Security")
    Send("admin{TAB}")
    Send("Password{Enter}")
    
  4. 机器人班

    alert.sendKeys("UserName");
    Robot robot = new Robot();
    robot.keyPress(KeyEvent.VK_TAB);
    robot.keyRelease(KeyEvent.VK_TAB);
    alert.sendKeys("Password");
    alert.accept();
    
  5. 还尝试通过在 URL 中输入用户名和密码来导航第二个 URL

除此之外,我还在我的 selenium 脚本中使用了一些 Chrome 选项

ChromeOptions options = new ChromeOptions(); 
options.addArguments("--disable-popup-blocking");
options.addArguments("chrome.switches","--disable-extensions");
driver = new ChromeDriver(options); 


ChromeOptions options = new ChromeOptions();
options.addArguments("test-type");
options.addArguments("disable-popup-blocking");
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
driver = new ChromeDriver(capabilities); 


WebDriverWait wait = new WebDriverWait(driver, 10);      
Alert alert = wait.until(ExpectedConditions.alertIsPresent());     
alert.authenticateUsing(new UserAndPassword(username, password)); 

是否有其他方法可以在 chrome 设置中或通过脚本删除此弹出窗口?

提前致谢

java google-chrome selenium security selenium-webdriver
2个回答
0
投票

以下代码对我有用

    Robot robot;
    try {
        robot = new Robot();
        robot.keyPress(KeyEvent.VK_ENTER);
        robot.keyRelease(KeyEvent.VK_ENTER);
    } catch (AWTException e) {
        e.printStackTrace();
    }

0
投票

您可以使用策略禁用基本身份验证。创建一个名为

/etc/opt/chrome/policies/managed/noauth.json
的文件,其中包含以下内容:

{
    "AuthSchemes": "negotiate"
}

注意:如果您使用 chromium,目录将为

chromium
chromium-browser
而不是
chrome

© www.soinside.com 2019 - 2024. All rights reserved.