java - 防止 Selenium WebDriver 在捕获异常后退出

标签 java selenium selenium-webdriver

我正在使用 Selenium Web Driver 来填写简单的表单:

private WebDriver driver = new FirefoxDriver();

函数:

public boolean fillDetailsInWeb(JsonElement data,String url){
        System.out.println("fill in-"+url);
        boolean result = false;
        try{
            driver.navigate().to(url);

        }catch(Exception e){
            System.out.println("Error in driver " + e.getMessage().toString());
            return result;
        }
        //web elements
        try{
            WebElement name_to_input = driver.findElement(By.id("ID1"));
            WebElement email_to_input =  driver.findElement(By.id("id2"));
            WebElement message_to_input = driver.findElement(By.id("ID3"));
        }catch(NoSuchElementException MSEE){
            MSEE.printStackTrace();
        }
        result = true;
        return result;
    }

我希望该过程在捕获 NoSuchElementException 后继续,并且程序转到下一个站点。 正确的做法是什么?

最佳答案

如标题所述,如果即使发生意外异常也想继续执行,则需要使用 The Final block 以及 尝试...捕获...<​​ block 。

来自this 链接:

finally block 总是在 try block 退出时执行。这确保即使发生意外异常,finally block 也会被执行。但finally 的用途不仅仅是异常处理——它允许程序员避免清理代码被返回、继续或中断意外绕过。将清理代码放在finally block 中始终是一个很好的做法,即使在预计不会出现异常的情况下也是如此。

所以你的 Try Catch block 和 Final 是:

...
try{
    driver.navigate().to(url);

}catch(Exception e){
    System.out.println("Error in driver " + e.getMessage().toString());
    return result;
}
//web elements
try{
    WebElement name_to_input = driver.findElement(By.id("ID1"));
    WebElement email_to_input =  driver.findElement(By.id("id2"));
    WebElement message_to_input = driver.findElement(By.id("ID3"));
}catch(NoSuchElementException MSEE){
    MSEE.printStackTrace();

} finally {
    return result;
}
...

关于java - 防止 Selenium WebDriver 在捕获异常后退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34316761/

相关文章:

java - 如何获取 Json 对象中的详细信息?

java - 如何将 Blob 对象转换为 Java 中的 PDF 文件?

java - 从 Java 文本文件中获取时间值

python - 使用 Python 抓取网页

javascript - 在 FireFox 和 IE 中使用 Selenium WebdriverJS 时出现问题

python - 如何通过 Selenium 和 Python 验证元素是否存在并调用 send_keys 方法

java - doPost 和 getParameter()

selenium - 给定 xpath 表达式 "//div[contains(@class=' loader-overlay')]"对 Selenium 无效

Python 爬虫找不到特定的 Xpath

html - 如何使用 HTML 标签之间的文本来访问元素 - Selenium WebDriver