2011-10-09 40 views

Trả lời

14

Tôi thường làm điều gì đó dọc theo dòng:

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

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

Đây là soltion tốt, nhưng có vẻ nó không phải là chính xác tương đương - nhìn vào bình luận ở đây: http: // rostislav- matl.blogspot.com/2011/03/moving-to-selenium-2-on-webdriver-part.html –

3

Tôi biết đây là một chút cũ, nhưng tôi tìm thấy một câu trả lời tốt ở đây: Selenium 2.0 Web Driver: implementation of isTextPresent

Trong Python, điều này có vẻ như:

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

Hoặc nếu bạn thực sự muốn kiểm tra nội dung văn bản của WebElement bạn có thể làm điều gì đó như:

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

Nguồn trang chứa thẻ HTML có thể làm hỏng văn bản tìm kiếm của bạn và dẫn đến âm bản sai. Tôi thấy giải pháp này hoạt động giống như API isTextPresent của Selenium RC.

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

làm getText và sau đó chứa không có hiệu suất. Bạn có thể muốn thu hẹp cây tìm kiếm bằng cách sử dụng WebElement cụ thể hơn.

2

Selenium2 Mã Java cho isTextPresent (Selenium IDE Code) trong 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

Tôi đã viết các phương pháp sau đây:

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

Các phương pháp trên được gọi như sau:

assertTrue(isTextPresent("some text")); 

Nó hoạt động tốt.

+0

assertTrue (boolean) và các phương thức khẳng định khác là từ JUnit? Tôi giả định rằng đây không phải là các gói java mặc định. – MKod

+0

Bạn không nghĩ rằng sẽ có vấn đề hiệu suất với "driver.getPageSource(). Chứa (văn bản)". Tôi nghĩ rằng nó sẽ tìm kiếm toàn bộ văn bản của nguồn trang. Nếu đó là cách duy nhất để làm để tìm một văn bản cụ thể thì làm thế nào để bạn biện minh cho thời gian trôi qua và hiệu suất mã. Cảm ơn bạn đã đăng một câu hỏi hay. – MKod

+0

@MKod: Tôi đồng ý với bạn. Nó có thể gây ra vấn đề hiệu suất vì nó tìm kiếm toàn bộ văn bản của một trang. Nó cần phải tìm ra một cách khác (s). Tôi đoán WebDriver sẽ được cải thiện từng ngày –

0

Kiểm tra xem văn bản có xuất hiện trong Ruby (cách tiếp cận người mới bắt đầu) hay không bằng cách sử dụng firefox làm trình duyệt mục tiêu.

1) Bạn cần tất nhiên để tải về và chạy selen tập tin máy chủ jar với một cái gì đó như:

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

2) Bạn cần cài đặt ruby, và trong thư mục bin của nó, chạy các lệnh để cài đặt ngọc thêm:

gem install selenium-webdriver 
gem install test-unit 

3) tạo ra một tập tin thử nghiệm it.rb chứa:

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) chạy ruby:

ruby test-it.rb 
2

Các mã sau sử dụng Java trong WebDriver nên làm việc:

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]*$")); 
Các vấn đề liên quan