ventanas tutorial tiempos metodos implicita espera español emergentes alertas java selenium webdriver

java - tutorial - Cómo verificar si un elemento es visible con WebDriver



tiempos de espera selenium (11)

Aquí es cómo lo haría (por favor, ignore las llamadas de la clase Logger de preocupación):

public boolean isElementExist(By by) { int count = driver.findElements(by).size(); if (count>=1) { Logger.LogMessage("isElementExist: " + by + " | Count: " + count, Priority.Medium); return true; } else { Logger.LogMessage("isElementExist: " + by + " | Could not find element", Priority.High); return false; } } public boolean isElementNotExist(By by) { int count = driver.findElements(by).size(); if (count==0) { Logger.LogMessage("ElementDoesNotExist: " + by, Priority.Medium); return true; } else { Logger.LogMessage("ElementDoesExist: " + by, Priority.High); return false; } } public boolean isElementVisible(By by) { try { if (driver.findElement(by).isDisplayed()) { Logger.LogMessage("Element is Displayed: " + by, Priority.Medium); return true; } } catch(Exception e) { Logger.LogMessage("Element is Not Displayed: " + by, Priority.High); return false; } return false; }

Con WebDriver de Selenium 2.0a2, tengo problemas para verificar si un elemento es visible.

WebDriver.findElement devuelve un WebElement , que desafortunadamente no ofrece un método isVisible . Puedo evitar esto usando WebElement.clear o WebElement.click ambos arrojan una ElementNotVisibleException , pero esto se siente muy sucio.

Alguna mejor idea?


Aunque estoy un poco tarde respondiendo la pregunta:

Ahora puede usar WebElement.isDisplayed() para verificar si un elemento está visible.


Es importante ver si el elemento es visible o no, ya que Driver.FindElement solo verificará la fuente HTML. Pero el código emergente podría estar en la página html y no estar visible. Por lo tanto, la función Driver.FindElement devuelve un falso positivo (y su prueba fallará)


Si está usando C #, sería driver.Displayed. Aquí hay un ejemplo de mi propio proyecto:

if (!driver.FindElement(By.Name("newtagfield")).Displayed) //if the tag options is not displayed driver.FindElement(By.Id("expand-folder-tags")).Click(); //make sure the folder and tags options are visible


Tengo las siguientes 2 formas sugeridas:

  1. Puede utilizar isDisplayed() como se muestra a continuación:

    driver.findElement(By.id("idOfElement")).isDisplayed();

  2. Puede definir un método como se muestra a continuación y llamarlo:

    public boolean isElementPresent(By by) { try { driver.findElement(by); return true; } catch (org.openqa.selenium.NoSuchElementException e) { return false; } }

Ahora, puede hacer una afirmación como la siguiente para verificar si el elemento está presente o no:

assertTrue(isElementPresent(By.id("idOfElement")));


Verificando ele es visible.

public static boolean isElementVisible(final By by) throws InterruptedException { boolean value = false; if (driver.findElements(by).size() > 0) { value = true; } return value; }


prueba esto

public boolean isPrebuiltTestButtonVisible() { try { if (preBuiltTestButton.isEnabled()) { return true; } else { return false; } } catch (Exception e) { e.printStackTrace(); return false; } }


element instanceof RenderedWebElement debería funcionar. // Pero esto es para la versión anterior de selenio rc.

Tenga en cuenta:

RenderedWebElement quedó en deprecated cuatro años (en 2013). Se admitió hasta selenium-2.0-rc-2 y se eliminó de selenium-2.0-rc-3 en adelante.

Por lo tanto, no existe dicha clase RenderedWebElement en la versión más reciente. La versión actual es 2.46.0. Pruebe usar la última versión

Utilice WebElement En su lugar, no es necesario isDisplayed() isEnabled() and driver.findElements(By.xpath(accessor)).size() > 0 y todo con isDisplayed() isEnabled() and driver.findElements(By.xpath(accessor)).size() > 0

Algo como esto:

public static boolean isElementFoundDisplayedEnabled(WebDriver driver, String accessor){ return driver.findElements(By.xpath(accessor)).size() > 0 && driver.findElement(By.xpath(accessor)).isDisplayed() && driver.findElement(By.xpath(accessor)).isEnabled(); //isDisplayed(): method avoids the problem of having to parse an element''s "style" attribute to check hidden/visible. False when element is not present //isEnabled(): generally return true for everything but disabled input elements. }


element instanceof RenderedWebElement debería funcionar.


try{ if( driver.findElement(By.xpath("//div***")).isDisplayed()){ System.out.println("Element is Visible"); } } catch(NoSuchElementException e){ else{ System.out.println("Element is InVisible"); } }


public boolean isElementFound( String text) { try{ WebElement webElement = appiumDriver.findElement(By.xpath(text)); System.out.println("isElementFound : true :"+text + "true"); }catch(NoSuchElementException e){ System.out.println("isElementFound : false :"+text); return false; } return true; } text is the xpath which you would be passing when calling the function. the return value will be true if the element is present else false if element is not pressent