如何检查selenium webdriver中是否存在按钮?

时间:2015-09-18 06:33:18

标签: xpath selenium-webdriver

我尝试使用以下代码,

if(driver.findElement(By.xpath("(//button[@type='button'])[2]")).isDisplayed()) 
{
     driver.findElement(By.xpath("(//button[@type='button'])[2]")).click();
}

else
    System.out.println("Show more is not there");

在这里,如果有"显示更多"在应用程序中按钮,它正确执行但是当"显示更多"按钮不存在,它没有执行其他部分并显示"无法找到元素错误" 有人可以帮忙吗? 提前谢谢。

2 个答案:

答案 0 :(得分:0)

当无法使用findElement查找和使用元素时,Selenium会抛出异常,因此您需要使用try / catch块 -

try 
{
     if(driver.findElement(By.xpath("(//button[@type='button'])[2]")).isDisplayed()) 
     {
          driver.findElement(By.xpath("(//button[@type='button'])[2]")).click();
     }
}
catch (ElementNotFoundException | ElementNotVisibleException | NoSuchElementException)
{
    System.out.println("Show more is not there");
}

答案 1 :(得分:0)

有两种不同的方法可以确定页面上是否存在WebElement。第一个是像在另一个答案中一样捕获异常,或者制作如下列表:

List<WebElement> resultList = findElements(By.xpath("(//button[@type='button'])[2]"));

然后检查列表的大小:

resultList.size() = 0;

所以在你的例子中它将是:

List<WebElement> resultList = findElements(By.xpath("(//button[@type='button'])[2]"));
if(resultList.size() > 0){
     driver.findElement(By.xpath("(//button[@type='button'])[2]")).click();
}else{
    System.out.println("Show more is not there");
}