Windows身份验证弹出问题
问题描述:
目前我正在开发一个项目,在那里我正面临Windows身份验证弹出窗口。为了处理这个弹出我使用机器人类。它也工作正常。但是我的主要问题是,同样的弹出窗口动态地一次又一次地出现。我怎样才能控制这个?任何人都可以在这方面帮助我吗?我写了下面的代码来控制一个Windows弹出窗口。Windows身份验证弹出问题
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));
OR
driver.get("http://UserName:[email protected]");
OR
如果上面没有工作,那么JavascriptExecutor为你工作。请注意,您应该在点击调用警报的事件之前执行它。
((JavascriptExecutor) driver).executeScript("window.confirm = function(msg) { return true; }");
注意: - 请勿在点击调用警报确认框的事件后使用它。上面的代码默认设置的确认框,真正意味着你接受/点击确定所有的确认对话框,网页上如果调用
希望它会帮助你:)
嗨,你给的代码,它不适合我。其实我面临的问题,这不是基于网页弹出,但它是基于Windows弹出。你能否在这方面帮助我,不管我给出的代码是哪一种,这可以控制基于动态窗口的弹出窗口? – Smriti
嗨Shubham,你可以在这方面帮助我吗?其实我在硒中很新。期待你的回应。 – Smriti
你可以添加你收到的错误吗? –