Selenium Windows身份验证弹出窗口问题

Selenium Windows身份验证弹出窗口问题,selenium,selenium-webdriver,Selenium,Selenium Webdriver,目前我正在从事一个项目,在那里我将面临Windows身份验证弹出窗口。为了处理这个弹出窗口,我使用了Robot类。它也工作得很好。但我的主要问题是,同一个弹出窗口一次又一次地动态出现。我怎样才能控制这一切?在这方面有人能帮我吗?我写了下面的代码来控制一个窗口弹出窗口 StringSelection username = new StringSelection("Username"); Toolkit.getDefaultToolkit().getSystemClipboard().setCont

目前我正在从事一个项目,在那里我将面临Windows身份验证弹出窗口。为了处理这个弹出窗口,我使用了Robot类。它也工作得很好。但我的主要问题是,同一个弹出窗口一次又一次地动态出现。我怎样才能控制这一切?在这方面有人能帮我吗?我写了下面的代码来控制一个窗口弹出窗口

StringSelection username = new StringSelection("Username");
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(username, null);            
                rb.keyPress(KeyEvent.VK_CONTROL);
                rb.keyPress(KeyEvent.VK_V);
                rb.keyRelease(KeyEvent.VK_V);
                rb.keyRelease(KeyEvent.VK_CONTROL);

                //tab to password entry field
                rb.keyPress(KeyEvent.VK_TAB);
                rb.keyRelease(KeyEvent.VK_TAB);
                Thread.sleep(2000);

                //Enter password by ctrl-v
                StringSelection pwd = new StringSelection("Password");
                Toolkit.getDefaultToolkit().getSystemClipboard().setContents(pwd, null);
                rb.keyPress(KeyEvent.VK_CONTROL);
                rb.keyPress(KeyEvent.VK_V);
                rb.keyRelease(KeyEvent.VK_V);
                rb.keyRelease(KeyEvent.VK_CONTROL);

                //press enter
                rb.keyPress(KeyEvent.VK_ENTER);
                rb.keyRelease(KeyEvent.VK_ENTER); 
            }

您可以创建/修改方法isAlertPresent,如下所示,然后重试。这可能对你有帮助

如果警报出现,首先用以下方法确认

public boolean isAlertPresent() {
    try{
       WebDriverWait wait = new WebDriverWait(driver, 5);
       wait.until(ExpectedConditions.alertIsPresent());
       return true;
    }
    catch (NoAlertPresentException noAlert) {
      return false;
    }
    catch (TimeoutException timeOutEx){
      return false;
    }
}
这是一个身份验证弹出窗口。您可以按如下方式进行处理:-

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

如果上述方法不起作用,那么JavascriptExecutor为您工作。只需注意在单击调用警报的事件之前执行它

((JavascriptExecutor) driver).executeScript("window.confirm = function(msg) { return true; }");
注意:-单击调用警报确认框的事件后,不要使用它。以上代码默认情况下,将确认框设置为true表示您正在接受/如果调用,请单击该页面上所有确认框上的ok


希望它能帮助您:)

您好,您提供的代码对我不起作用。实际上,我面临的问题不是基于web的弹出窗口,而是基于windows的弹出窗口。你能在这方面帮助我吗?我给出的代码,我能控制基于windows的动态弹出窗口吗?嗨,Shubham,你能在这方面帮助我吗,?事实上,我是硒的新手。期待您的回复。
((JavascriptExecutor) driver).executeScript("window.confirm = function(msg) { return true; }");