我有一个场景,当我们点击保存两个进程时就可以发生。它可以显示一些消息,否则页面可能会崩溃。我已经为崩溃添加了一个if条件,并且如果应用程序没有因为其他条件而崩溃,则提到了另一个进程。我编写了这样的代码来处理崩溃。
try {
if (driver.findElement(By.xpath("/html/body/form/div[4]/div[3]/div[1]/div[1]/div[1]/span[1]")).isDisplayed()){
System.out.println("Critical Error Occured.");
driver.close();
} else{
String msg = driver.findElement(By.xpath("/html/body/form/div[4]/div[3]/div[1]/div[1]/div/div/div[1]/div/div[2]/div/div[1]/span")).getText();
if (msg.equals("User already registered")){
driver.findElement(By.name("dnn$ctr5995$View$btnOk")).click();
System.out.println(msg);
driver.close();
} else if (msg.equals("Admission number already exist.")) {
driver.findElement(By.name("dnn$ctr5995$View$btnOk")).click();
System.out.println(msg);
System.out.println("Please change the admission number.");
driver.quit();
} else if (msg.equals("Saved Successfully.")){
driver.findElement(By.name("dnn$ctr5995$View$btnOk")).click();
System.out.println(msg);
}
}
}catch ( org.openqa.selenium.NoSuchElementException e){
System.out.println("No Such Element Exception.");
}
由于页面很少崩溃,因此执行控件时会捕获,因此不会执行第一个if条件的else条件。对此有什么解决方案吗?
答案 0 :(得分:4)
在try-catch
的各个部分中单独使用if
块,或者使用finally
块来表示您始终要执行的代码。
你有两个独立的问题,第一个是条件中的findElement。要处理这个问题,你需要单独进行查找,然后执行if。
Element elem = null
try {
elem = driver.findElement(By.xpath("/html/body/form/div[4]/div[3]/div[1]/div[1]/div[1]/span[1]"));
} catch (org.openqa.selenium.NoSuchElementException e) {
System.out.println("No Such Element Exception.");
}
然后你需要在else
中处理它if (elem != null && elem.isDisplayed()){
System.out.println("Critical Error Occured.");
driver.close();
} else{
try {
String msg = driver.findElement(By.xpath("/html/body/form/div[4]/div[3]/div[1]/div[1]/div/div/div[1]/div/div[2]/div/div[1]/span")).getText();
if (msg.equals("User already registered")){
driver.findElement(By.name("dnn$ctr5995$View$btnOk")).click();
System.out.println(msg);
driver.close();
} else if (msg.equals("Admission number already exist.")) {
driver.findElement(By.name("dnn$ctr5995$View$btnOk")).click();
System.out.println(msg);
System.out.println("Please change the admission number.");
driver.quit();
} else if (msg.equals("Saved Successfully.")){
driver.findElement(By.name("dnn$ctr5995$View$btnOk")).click();
System.out.println(msg);
}
} catch ( org.openqa.selenium.NoSuchElementException e){
}
}
答案 1 :(得分:0)
http://docs.oracle.com/javase/tutorial/essential/exceptions/finally.html
可能你正在寻找finally子句,不是吗?
答案 2 :(得分:0)
最后一句可以解决你的问题。包含必须在Finally子句
中执行代码的最佳实践