我是编程的新手。帮帮我。我想打印在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块中打印该链接并转到下一个链接。我怎么能这样做?
答案 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)
要在try
和catch
块中访问您的变量,您需要将其范围进一步移出(在您的情况下转移到周围的方法)。如果您希望能够继续迭代数组,则需要确保在循环的单次迭代中捕获异常,方法是移动其中的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{...
}