如何在catch块中打印变量?

时间:2015-02-08 17:09:10

标签: java selenium selenium-webdriver

我是编程的新手。帮帮我。我想打印在try块中失败的链接值来捕获块。我怎么能这样做?这是我的代码:

public class test {
    public static void main(String[] args) throws NoSuchElementException {
        try { 
            int i=1;
            String links[]= new String[10];
            links[1]="link1"
            links[2]="link2"
            links[3]="link3"
            links[3]="link4"
            WebDriver driver = new FirefoxDriver();

            while(i<5){
                driver.get(links[i])
                driver.findElement(By.xpath("//div[contains(@id,'image')]")).click();
                i++;
            }
        }
        catch(NoSuchElementException e){
            // e.printStackTrace(System.out);
        }
    }
}

假设其中一个链接无法找到元素。我希望在catch块中打印该链接并转到下一个链接。我怎么能这样做?

3 个答案:

答案 0 :(得分:3)

为了能够在链接失败后尝试下一个链接,你应该把try-catch块放在while循环中。

int i=0;
String links[]= new String[10];
links[0]="link1";
links[1]="link2";
links[2]="link3";
links[3]="link4";
WebDriver driver = new FirefoxDriver();

while(i<4){
    try { 
        driver.get(links[i]);
        driver.findElement(By.xpath("//div[contains(@id,'image')]")).click();
        i++;
    }
    catch(NoSuchElementException e){
        System.out.println(links[i] + " failed");
        i++;
    }
}

答案 1 :(得分:3)

要在trycatch块中访问您的变量,您需要将其范围进一步移出(在您的情况下转移到周围的方法)。如果您希望能够继续迭代数组,则需要确保在循环的单次迭代中捕获异常,方法是移动其中的try-catch块。这也缩小了try-catch块的大小,这通常是一件好事。

public class test {
    public static void main(String[] args) throws NoSuchElementException {
        int i = 1;
        String links[] = new String[10];
        links[1] = "link1"
        links[2] = "link2"
        links[3] = "link3"
        links[3] = "link4"
        WebDriver driver = new FirefoxDriver();

        while (i < 5) {
            try {
                driver.get(links[i])
                driver.findElement(By.xpath("//div[contains(@id,'image')]")).click();
            } catch (NoSuchElementException e) {
                System.out.println("Problem link had index: " + i);
            } finally {
                i++;
            }
        }
    }
}

答案 2 :(得分:0)

从try块中声明links变量。链接变量超出了代码的范围,即应该在启动try块之前。

String links[] = new String[10]
try{...

}