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