java selenium-webdriver assertion verify

assert selenium java



La mejor forma de comprobar que el elemento no está presente utilizando Selenium WebDriver con java (7)

Estoy probando el código de abajo, pero parece que no funciona ... ¿Puede alguien mostrarme la mejor manera de hacer esto?

public void verifyThatCommentDeleted(final String text) throws Exception { new WebDriverWait(driver, 5).until(new ExpectedCondition<Boolean>() { @Override public Boolean apply(WebDriver input) { try { input.findElement(By.xpath(String.format( Locators.CHECK_TEXT_IN_FIRST_STATUS_BOX, text))); return false; } catch (NoSuchElementException e) { return true; } } }); }


En lugar de hacer findElement, findElements y verifica que la longitud de los elementos devueltos sea 0. Así es como estoy usando WebdriverJS y espero que lo mismo funcione en Java


No se puede comentar en The Meteor Test Manual, ya que no tengo ninguna repetición, pero quería dar un ejemplo que me tomó bastante tiempo descubrir:

Assert.assertEquals(0, wd.findElements(By.locator("locator")).size());

Esta afirmación verifica que no hay elementos coincidentes en el DOM y devuelve el valor de Cero, por lo que la aserción pasa cuando el elemento no está presente. También fallaría si estuviera presente.


Por lo general, un par de métodos (en par) para verificar si el elemento está presente o no:

public boolean isElementPresent(By locatorKey) { try { driver.findElement(locatorKey); return true; } catch (org.openqa.selenium.NoSuchElementException e) { return false; } } public boolean isElementVisible(String cssLocator){ return driver.findElement(By.cssSelector(cssLocator)).isDisplayed(); }

Tenga en cuenta que a veces el selenio puede encontrar elementos en DOM, pero pueden ser invisibles, por lo que el selenio no podrá interactuar con ellos. Así que en este caso el método de verificación de visibilidad ayuda.

Si desea esperar por el elemento hasta que aparezca, la mejor solución que encontré es usar la espera fluida:

public WebElement fluentWait(final By locator){ Wait<WebDriver> wait = new FluentWait<WebDriver>(driver) .withTimeout(30, TimeUnit.SECONDS) .pollingEvery(5, TimeUnit.SECONDS) .ignoring(NoSuchElementException.class); WebElement foo = wait.until(new Function<WebDriver, WebElement>() { public WebElement apply(WebDriver driver) { return driver.findElement(locator); } }); return foo; };

Espero que esto ayude)


Utilice findElements en lugar de findElement .

findElements devolverá una lista vacía si no se encuentran elementos coincidentes en lugar de una excepción. Además, podemos asegurarnos de que el elemento esté presente o no.

Ej: List elements = driver.findElements (By.yourlocatorstrategy);

if(elements.size()>0){ do this.. } else { do that.. }


int i=1; while (true) { WebElementdisplay=driver.findElement(By.id("__bar"+i+"-btnGo")); System.out.println(display); if (display.isDisplayed()==true) { System.out.println("inside if statement"+i); driver.findElement(By.id("__bar"+i+"-btnGo")).click(); break; } else { System.out.println("inside else statement"+ i); i=i+1; } }


WebElement element = driver.findElement(locator); Assert.assertFalse(element.isDisplayed());

La aserción pasará si el elemento no está presente, de lo contrario fallará.


WebElement element = driver.findElement(locator); Assert.assertNull(element);

La aserción anterior pasará si el elemento no está presente.