2011-10-09 22 views

risposta

14

faccio di solito qualcosa sulla falsariga di:

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

assertTrue(driver.getPageSource().contains("sometext")); 
+0

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 –

3

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 
3

Oppure, se si desidera controllare realmente il contenuto del testo di un WebElement si potrebbe fare qualcosa di simile:

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

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.

2

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")); 
} 
1

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.

+0

l'assertTrue (booleano) e altri metodi di asserzione provengono da JUnit? Sto assumendo che questi non siano con i pacchetti java predefiniti. – MKod

+0

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

+0

@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 –

0

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 
2

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]*$"));