验证按钮是否可见Selenium

时间:2017-01-17 05:25:59

标签: java selenium

我有一个测试脚本,它基本上为不同的用户执行了许多步骤。有些用户会看到一个特定的按钮,而有些则不会。

我创建了一个方法,用于检查按钮是否显示如下:

public boolean check_create_new_item_button_visible(){

    Boolean visible = driver.findElement(By.linkText("New Item")).isDisplayed();
    return visible;
} 

并以下列方式调用:

boolean visible = npc.check_create_new_item_button_visible();

但我总是得到错误:

org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"link text","selector":"New Item"}

按钮不可见,这是您所期望的。

可能是一个愚蠢的错误,但我如何才能确定该按钮是否在屏幕上以便我的程序可以继续?

我很自然地将代码移动到程序的一部分,其中按钮可见,boolean visible返回true。因此,如果按钮可见,代码就可以工作。

2 个答案:

答案 0 :(得分:2)

如果driver.findElement返回找到的元素,或者如果找不到该元素则抛出NoSuchElementException。为了避免异常,您可以使用findElements并检查返回的列表是否包含元素,以及是否检查第一个是否可见

public boolean check_create_new_item_button_visible() {
    List<WebElement> buttons = driver.findElements(By.linkText("New Item"));
    if (buttons.size() > 0 && buttons.get(0).isDisplayed())
    {
        return true;
    }
    return false;
} 

答案 1 :(得分:1)

public boolean check_create_new_item_button_visible(){
  try {
    boolean btnPresence = driver.findElement(By.linkText("New Item")).isDisplayed();
    boolean btnEnable = driver.findElement(By.linkText("New Item")).isEnabled();
    if (btnPresence ==true && btnEnable ==true)
    {
  // click on the search button
      WebElement btn = driver.findElement(By.linkText("New Item"));
      btn .click();
     }
   catch (org.openqa.selenium.NoSuchElementException e){
            return false;
      }
  }