Testing 在If条件下,我们可以使用IsDisplayed方法吗?

Testing 在If条件下,我们可以使用IsDisplayed方法吗?,testing,selenium,selenium-webdriver,automation,automated-tests,Testing,Selenium,Selenium Webdriver,Automation,Automated Tests,我有一个场景,在某些情况下,应用程序崩溃并显示发生“严重错误”的警报。但这种情况很少发生。为了处理这个问题,我写了一个代码 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()

我有一个场景,在某些情况下,应用程序崩溃并显示发生“严重错误”的警报。但这种情况很少发生。为了处理这个问题,我写了一个代码

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 {

但是,即使没有显示“严重错误”页面,也会执行if条件,并且不会显示此类元素异常。可以做什么?

您应该检查元素是否存在或未使用

List<WebElement> criticalError = driver.findElements(By.xpath("/html/body/form/div[4]/div[3]/div[1]/div[1]/div[1]/span[1]"));

if(criticalError.size() >0) {
    System.out.println("Critical Error Occured.");
    driver.close();     
}
else {
    // continue the test
}
List criticalError=driver.findElements(By.xpath(“/html/body/form/div[4]/div[3]/div[1]/div[1]/div[1]/span[1]”);
如果(criticalError.size()>0){
System.out.println(“发生严重错误”);
driver.close();
}
否则{
//继续测试
}

您可以在if条件下使用
isDisplayed
方法或验证其大小来检查存在的元素,这不是问题,但代码放置的位置很重要。
没有此类元素异常发生
,因为代码正在放置位置进行验证,并且您没有得到错误页面,它正在引发异常


可能的解决方案:将条件置于页面可能出现错误的位置/必要的位置

这将在停止查找元素之前使用默认超时(30s)。您可以使用driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS)来调整超时;只有getSize()函数可用。我找不到.soze函数。我刚刚更新了答案,getSize()仅适用于WebElement;size()可以与List一起使用-因为我使用了findelelements(以S结尾)@NguyenVuHoang,我认为您所说的关于查找存在或不存在元素的答案与问题无关。这是最好的方法,如果错误不显示->则进行测试。正如迪努所说,这很少发生happens@Dinu您可以使用try-catch来处理异常,这是一种很好的方法