chromedriver webdriver selenium-webdriver assertion

chromedriver - selenium webdriver



Equivalente de isTextPresent en Selenium 1(Selenium RC) en Selenium 2(WebDriver) (8)

O si realmente desea verificar el contenido de texto de un WebElement , podría hacer algo como:

assertEquals(getMyWebElement().getText(), "Expected text");

No hay isTextPresent en Selenium 2 (WebDriver)

¿Cuál es la forma correcta de afirmar la existencia de texto en una página con WebDriver?


Normalmente hago algo como:

assertEquals(driver.getPageSource().contains("sometext"), true); assertTrue(driver.getPageSource().contains("sometext"));


El origen de la página contiene etiquetas HTML que pueden romper el texto de búsqueda y dar como resultado negativos falsos. Encontré que esta solución funciona de manera similar a la API isTextPresent de Selenium RC.

WebDriver driver = new FirefoxDriver(); //or some other driver driver.findElement(By.tagName("body")).getText().contains("Some text to search")

hacer getText y luego contener tiene una compensación de rendimiento. Es posible que desee restringir el árbol de búsqueda utilizando un WebElement más específico.


Código Java Selenium2 para isTextPresent (Código IDE de Selenio) en JUnit4

public boolean isTextPresent(String str) { WebElement bodyElement = driver.findElement(By.tagName("body")); return bodyElement.getText().contains(str); } @Test public void testText() throws Exception { assertTrue(isTextPresent("Some Text to search")); }


He escrito el siguiente método:

public boolean isTextPresent(String text){ try{ boolean b = driver.getPageSource().contains(text); return b; } catch(Exception e){ return false; } }

El método anterior se llama de la siguiente manera:

assertTrue(isTextPresent("some text"));

Está funcionando bien.


Probando si el texto está presente en Ruby (un enfoque para principiantes) usando Firefox como navegador de destino.

1) Por supuesto, debe descargar y ejecutar el archivo jar del servidor de selenio con algo como:

java - jar C:/Users/wmj/Downloads/selenium-server-standalone-2.25.0.jar

2) Necesitas instalar ruby, y en su carpeta bin, ejecutar comandos para instalar gemas adicionales:

gem install selenium-webdriver gem install test-unit

3) crear un archivo test-it.rb que contenga:

require "selenium-webdriver" require "test/unit" class TestIt < Test::Unit::TestCase def setup @driver = Selenium::WebDriver.for :firefox @base_url = "http://www.yoursitehere.com" @driver.manage.timeouts.implicit_wait = 30 @verification_errors = [] @wait = Selenium::WebDriver::Wait.new :timeout => 10 end def teardown @driver.quit assert_equal [], @verification_errors end def element_present?(how, what) @driver.find_element(how, what) true rescue Selenium::WebDriver::Error::NoSuchElementError false end def verify(&blk) yield rescue Test::Unit::AssertionFailedError => ex @verification_errors << ex end def test_simple @driver.get(@base_url + "/") # simulate a click on a span that is contained in a "a href" link @driver.find_element(:css, "#linkLogin > span").click # we clear username textbox @driver.find_element(:id, "UserName").clear # we enter username @driver.find_element(:id, "UserName").send_keys "bozo" # we clear password @driver.find_element(:id, "Password").clear # we enter password @driver.find_element(:id, "Password").send_keys "123456" # we click on a button where its css is named as "btn" @driver.find_element(:css, "input.btn").click # you can wait for page to load, to check if text "My account" is present in body tag assert_nothing_raised do @wait.until { @driver.find_element(:tag_name=>"body").text.include? "My account" } end # or you can use direct assertion to check if text "My account" is present in body tag assert(@driver.find_element(:tag_name => "body").text.include?("My account"),"My account text check!") @driver.find_element(:css, "input.btn").click end end

4) ejecutar ruby:

ruby test-it.rb


El siguiente código que usa Java en WebDriver debería funcionar:

assertTrue(driver.getPageSource().contains("Welcome Ripon Al Wasim")); assertTrue(driver.findElement(By.id("widget_205_after_login")).getText().matches("^[//s//S]*Welcome ripon[//s//S]*$"));


Sé que esto es un poco viejo, pero encontré una buena respuesta aquí: Selenium 2.0 Web Driver: implementación de isTextPresent

En Python, esto se ve así:

def is_text_present(self, text): try: el = self.driver.find_element_by_tag_name("body") except NoSuchElementException, e: return False return text in el.text