[英]selenium webdriver modal dialog java
我正在測試表單,當我不鍵入所需數據時,我的Web應用程序中出現了JavaScript警報,提示用戶輸入丟失的數據。 我無法使用Selenium處理此問題,因為當我部分填寫表格並嘗試提交時,出現異常
org.openqa.selenium.UnhandledAlertException: Modal dialog present
如果我捕獲到異常,則不會顯示webdriver中的警報。 是否有解決此問題的解決方案?我希望能夠提交表單並及時接收警報。 我正在將Java Mint,Firefox 18和Selenium 2.28.0與Java一起使用我在代碼中遵循以下最佳問候
somePage.fillName(sth); //only 1 of 2 required field are filled
somgePage.submit(); //here js alert is shown right after clicking submit
somePage.getCurrentAlert();
//here are code parts
public Alert getCurrentAlert(){
return driver.switchTo().alert();
}
public AdminHome submit(){
saveUrl();
WebElement submit = driver.findElement(By.id("add_quiz_submit_button"));
try{
submit.click();
if(urlChanged()){
return new AdminHome(driver);
}
}
catch(Exception e){
e.printStackTrace();// exception 1
return null;
}
return null;
}
//Exception 1
org.openqa.selenium.UnhandledAlertException: Modal dialog present
//The test fails because of:
org.openqa.selenium.NoAlertPresentException: No alert is present (WARNING: The server did not provide any stacktrace information)
但是,如果我單擊手冊上的按預期方式提交測試工作。 提前致謝
您應在操作完成后立即處理警報,並且在處理警報之前不應執行任何其他操作。
例如你的代碼應該是
try{
submit.click();
if (alertPresent())
getCurrentAlert();
if(urlChanged()){
return new AdminHome(driver);
}
}
這將檢查警報,然后接受警報。 Webdriver的交互與我們使用瀏覽器手動交互的操作更為相似。 因此,單擊提交完成后,我們將能夠看到警報,除非接受或拒絕,否則無法采取任何措施。
維沙爾
這是因為在引發UnhandledAlertException時,驅動程序本身接受警報。 如果部分填寫了表格,如何提交?
如果有可能,只需捕獲該異常,然后在catch塊中編寫單擊“提交”按鈕的行。
使用Robot類(按Enter鍵)關閉模式對話框
try {
(new Robot()).keyPress(java.awt.event.KeyEvent.VK_ENTER);
(new Robot()).keyRelease(java.awt.event.KeyEvent.VK_ENTER);
} catch (AWTException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.