2011-10-09 15 views
15

वहाँ सेलेनियम में कोई isTextPresent 2 (WebDriver)सेलेनियम 2 (WebDriver) में सेलेनियम 1 (सेलेनियम आर सी) में isTextPresent के समतुल्य

WebDriver के साथ एक पृष्ठ पर कुछ पाठ के अस्तित्व पर जोर करने के लिए सही तरीका क्या है क्या है?

उत्तर

14

मैं सामान्य रूप से की तर्ज पर कुछ करना:

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

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

यह अच्छा soltion है, लेकिन यह यह सटीक बराबर नहीं है लगता है - टिप्पणी यहाँ देखो: http: // rostislav- matl.blogspot.com/2011/03/moving-to-selenium-2-on-webdriver-part।एचटीएमएल –

3

मैं जानता हूँ कि यह एक सा पुराना है, लेकिन मैं एक अच्छा जवाब मिला:

: Selenium 2.0 Web Driver: implementation of isTextPresent

अजगर में, इस तरह दिखता है

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

या यदि आप वास्तव में वेबलेमेंट की टेक्स्ट सामग्री को देखना चाहते हैं तो आप कुछ ऐसा कर सकते हैं:

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

पृष्ठ स्रोत HTML टैग जो आपके खोज लेख को तोड़ने और मिथ्या नकारात्मक हो सकती हैं। मैंने पाया कि यह समाधान सेलेनियम आरसी की isTextPresent API की तरह काम करता है।

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

getText कर रहा है और उसके बाद इसमें प्रदर्शन व्यापार-बंद है। आप अधिक विशिष्ट वेबलेमेंट का उपयोग कर खोज पेड़ को कम करना चाहते हैं।

2
JUnit4 में isTextPresent (सेलेनियम आईडीई संहिता) के लिए

Selenium2 जावा कोड

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

मैं निम्न विधि लिखा है:

assertTrue(isTextPresent("some text")); 
:

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

उपरोक्त विधि नीचे के रूप में कहा जाता है

यह अच्छी तरह से काम कर रहा है।

+0

assertTrue (बूलियन) और अन्य assert विधियां जुनीट से हैं? मुझे लगता है कि ये डिफ़ॉल्ट जावा पैकेज के साथ नहीं हैं। – MKod

+0

क्या आपको नहीं लगता कि "driver.getPageSource() में प्रदर्शन समस्या होगी। (टेक्स्ट)"। मुझे लगता है कि यह पृष्ठ स्रोत के पूरे बहुत सारे पाठ को खोजेगा। यदि यह एक विशेष पाठ खोजने का एकमात्र तरीका है तो आप समय व्यतीत और कोड प्रदर्शन को कैसे औचित्य देते हैं। इस तरह के एक अच्छा सवाल पोस्ट करने के लिए धन्यवाद। – MKod

+0

@MKod: मैं आपसे सहमत हूं। यह प्रदर्शन समस्या का कारण बन सकता है क्योंकि यह किसी पृष्ठ के पूरे पाठ को खोजता है। इसे एक वैकल्पिक तरीके खोजने की जरूरत है। मुझे लगता है कि WebDriver दिन में दिन में सुधार होगा –

0

परीक्षण ब्राउज़र के रूप में फ़ायरफ़ॉक्स का उपयोग करते हुए रूबी (एक शुरुआती दृष्टिकोण) में पाठ मौजूद है या नहीं।

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

2) आप रूबी स्थापित करने की आवश्यकता है, और उसके बिन फ़ोल्डर में, अतिरिक्त जवाहरात स्थापित करने के लिए चलाने के आदेश:

1) आप डाउनलोड करने और की तरह कुछ के साथ सेलेनियम सर्वर जार फ़ाइल को चलाने के निश्चित रूप से की जरूरत है:

gem install selenium-webdriver 
gem install test-unit 

3) एक फ़ाइल परीक्षण it.rb युक्त बनाने के लिए:

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) को चलाने के गहरे लाल रंग का:

ruby test-it.rb 
2

निम्नलिखित कोड WebDriver में जावा का उपयोग कर काम करना चाहिए:

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