繁体   English   中英

硒webdriver模式对话框java

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM