使用equalsIgnoreCase时if else在selenium webdriver中不起作用

时间:2016-05-12 09:29:41

标签: java selenium if-statement selenium-webdriver automation

try {
    List<WebElement> list1 = driver.findElements(By.tagName("a"));

    for (WebElement e : list1) {
        if (e.getAttribute("href").equalsIgnoreCase("/ProductsRoute.do")) {
            if (driver.findElement(By.id("buttonCheck++Check")).isDisplayed()) {
                driver.findElement(By.id("buttonCheck++Check")).click();
                ProductConfPageexceptionHandler(driver);
                break;
            }
        else if (driver.findElement(By.name("Next")).isDisplayed()) {
                WebElement nextBut = driver.findElement(By.name("Next"));
                nextBut.click();
                break;
            }
        break; 
        }   
}
    }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

问题在于,当脚本执行e.getAttribute(&#34; href&#34;)时,它会查找/ProductsRou​​te.do。如果它没有找到它,那么它应该在那里打破。但问题是我得到java.lang.NullPointerException。

期望是,它应该找到尝试找到href /Products.do,如果它不存在,它应该在那里打破。如果它在/Product.do中,那么它应该执行下一个if。需要您帮助找到问题。谢谢你们!

1 个答案:

答案 0 :(得分:1)

可能的解决方案:

  1. 检查列表大小并确保元素存在

    断言(list1.size()&gt; 0).isTrue()

  2. 在条件

    之前给出一些等待时间

    driver.manage()。timeouts()。implicitlyWait(10,TimeUnit.SECONDS);