Non c'è isTextPresent
di selenio 2 (WebDriver)equivalente di isTextPresent di selenio 1 (Selenio RC) in Selenio 2 (WebDriver)
Qual è il modo corretto per affermare l'esistenza di un testo su una pagina con WebDriver?
Non c'è isTextPresent
di selenio 2 (WebDriver)equivalente di isTextPresent di selenio 1 (Selenio RC) in Selenio 2 (WebDriver)
Qual è il modo corretto per affermare l'esistenza di un testo su una pagina con WebDriver?
faccio di solito qualcosa sulla falsariga di:
assertEquals(driver.getPageSource().contains("sometext"), true);
assertTrue(driver.getPageSource().contains("sometext"));
So che questo è un po 'vecchio, ma ho trovato qui una buona risposta: Selenium 2.0 Web Driver: implementation of isTextPresent
In Python, questo appare come:
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
Oppure, se si desidera controllare realmente il contenuto del testo di un WebElement si potrebbe fare qualcosa di simile:
assertEquals(getMyWebElement().getText(), "Expected text");
L'origine della pagina contiene tag HTML che potrebbero interrompere il testo di ricerca e generare falsi negativi. Ho trovato che questa soluzione funziona molto come l'API isTextPresent di Selenium RC.
WebDriver driver = new FirefoxDriver(); //or some other driver
driver.findElement(By.tagName("body")).getText().contains("Some text to search")
fare getText e quindi contiene ha un compromesso in termini di prestazioni. Potresti voler restringere la struttura di ricerca usando un WebElement più specifico.
codice Java Selenium2 per isTextPresent (Selenio codice IDE) in 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"));
}
ho scritto il seguente metodo:
public boolean isTextPresent(String text){
try{
boolean b = driver.getPageSource().contains(text);
return b;
}
catch(Exception e){
return false;
}
}
Il metodo di cui sopra si chiama come di seguito:
assertTrue(isTextPresent("some text"));
Funziona bene.
l'assertTrue (booleano) e altri metodi di asserzione provengono da JUnit? Sto assumendo che questi non siano con i pacchetti java predefiniti. – MKod
Non pensi che ci sarà un problema di prestazioni con "driver.getPageSource(). Contains (text)". Penso che cercherà tutto il testo del sorgente della pagina. Se questo è l'unico modo per trovare un testo particolare, come giustificare l'intervallo di tempo e le prestazioni del codice. Grazie per aver postato una domanda così bella. – MKod
@MKod: sono d'accordo con te. Può causare problemi di prestazioni mentre cerca l'intero testo di una pagina. Ha bisogno di trovare un modo (i) alternativo (i). Immagino che WebDriver migliorerà giorno dopo giorno –
Verificare se il testo è presente in Ruby (un approccio principianti) utilizzando Firefox come browser di destinazione.
1) è necessario, naturalmente, per scaricare ed eseguire file jar server di selenio con qualcosa di simile:
java - jar C:\Users\wmj\Downloads\selenium-server-standalone-2.25.0.jar
2) È necessario installare rubino, e nella sua cartella bin, eseguire comandi da installare gemme aggiuntive:
gem install selenium-webdriver
gem install test-unit
3) creare un file di test-it.rb contenente:
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) rubino eseguire:
ruby test-it.rb
il seguente codice utilizzando Java in WebDriver dovrebbe funzionare:
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]*$"));
Questo è un bene soltion, ma sembra non è l'esatto equivalente - guardare i commenti qui: http: // rostislav- matl.blogspot.com/2011/03/moving-to-selenium-2-on-webdriver-part.html –