如何执行在测试方法中找不到元素的部分之后的代码?

时间:2014-03-28 06:12:38

标签: java selenium-webdriver testng

假设,我正在测试检查页面上是否存在所有链接的方法。例如:

@Test
public void testLinks(){
    driver.findElement(By.linkText("link1"));
    driver.findElement(By.linkText("link2"));
    driver.findElement(By.linkText("link3"));
    driver.findElement(By.linkText("link4"));
    driver.findElement(By.linkText("link5"));
}

在上面的代码中,假设除link3之外的所有链接都存在,那么测试方法的执行将在抛出link3的错误后停止,但仍然如果我想执行代码来检查link4link5,如何使用Java实现这一目标?

2 个答案:

答案 0 :(得分:1)

我认为你的意思是抛出异常。 您可以在另一个处理异常的方法中逐个测试链接。

public void testOne(String link) {
    try {
       driver.findElement(By.linkText(link));
    }
    catch (Exception e) {
       System.out.println(link+" failed to find");
    }
}

public void test() {
    testOne("link1");
    testOne("link2");
    testOne("link3");
    testOne("link4");
    testOne("link5");
}

testOne()方法将捕获异常并打印失败的记事,并且您的测试方法不会中断。

答案 1 :(得分:0)

试试这个,您可以使用TestNg报告器让您的测试通过或失败或log4j日志,试试这个。

sResult = "Pass";

public void testOne(String link) {
    try {
       driver.findElement(By.linkText(link));
    }
    catch (Exception e) {
       System.out.println(link+" failed to find");
       sResult = "Fail";
    }
}

public void test() {
    testOne("link1");
    testOne("link2");
    testOne("link3");
    testOne("link4");
    testOne("link5");
}


if(sResult.equals("Pass")){
            System.out.println("Pass");
        }else{
            System.out.println("Fail");

        }