我在if()语句中遇到错误:org.openqa.selenium.NoSuchElementException:无法找到元素:.// * [@ id ='p40021404_qty']

时间:2017-01-09 10:53:54

标签: java selenium-webdriver automation

    if (big.findElement(By.xpath(".//*[@id='p40021404_qty']")).getSize() != null){
        big.findElement(By.xpath(".//*[@id='navbar-main']/div/div/div[4]/div/div[2]/div/div[2]/div[2]/div[2]/button")).click();
    }
    else{
        System.out.println("Quantity is less !!!");
    } 

有谁能告诉我哪里出错了?

2 个答案:

答案 0 :(得分:1)

findElement不返回null,返回WebElement或抛出NoSuchElementException。此外,getSize()永远不会是null

您可以使用findElements并检查列表中是否有任何元素

List<WebElement> elements = big.findElements(By.xpath(".//*[@id='p40021404_qty']"));
if (elements.getSize() > 0) {
    big.findElement(By.xpath(".//*[@id='navbar-main']/div/div/div[4]/div/div[2]/div/div[2]/div[2]/div[2]/button")).click();
}
else {
    System.out.println("Quantity is less !!!");
} 

答案 1 :(得分:0)

您的条件抛出异常,因为元素不存在而您在这段代码中没有处理异常。您可以在if语句中检查之前找到此元素,并注意异常,请按照注释中的建议使用try / catch。