2011-10-20 9 views
6

का कार्यान्वयन मैं इसके कार्यान्वयन की तलाश में हूं। सबसे अच्छा मैं के साथ आ गया है:सेलेनियम 2.0 वेब चालक: isTextPresent

public boolean isTextPresent(String string) { 

     for (WebElement e : drv.findElements(By.cssSelector("*"))) { 

      if (e.isDisplayed() && e.getText().contains(string)) { 
       return true; 
      } 

     } 
     return false; 
    } 
+1

आप अधिक विशिष्ट जब पाठ की तलाश में नहीं हो सकता है? यह धीमा होने वाला है क्योंकि आप संभावित रूप से पूरे डोम पर चल रहे हैं। आईई सबसे खराब होगा। यदि आप कम से कम कुछ खोज को कम कर सकते हैं तो यह बेहतर होगा ... – Mikezx6r

+1

स्वाभाविक रूप से आप सही हैं। मैं जेनकींस का उपयोग कर वहां दौड़ रहा हूं, इसलिए वास्तव में समय एक मुद्दा कम है। –

उत्तर

5

एक तेज़ तरीका करने के लिए यह कुछ इस तरह होगा:

public boolean isTextPresent(string str) 
{ 
    IWebElement bodyElement = driver.FindElement(By.TagName("body")); 
    return bodyElement.Text.contains(str); 
} 

यह सी # में है, लेकिन यह एक ही अवधारणा है। शरीर टैग का पाठ प्राप्त करना स्वचालित रूप से सभी नेस्टेड तत्वों का पाठ देता है। केवल एक चीज जो मुझे यकीन नहीं है वह है अगर छुपे तत्व शामिल हैं या नहीं।

+0

अच्छा लगता है। क्या यह अदृश्य पाठ भी कैप्चर करेगा? जैसे जावास्क्रिप्ट? –

+0

नहीं, यह स्क्रीन पर दिखाई देने वाले पाठ को वापस कर देगा, यानी तत्वों का आंतरिक पाठ। उदाहरण के लिए:

यह पाठ

। – prestomanifesto

+0

उत्कृष्ट - धन्यवाद! –

0

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

assertTrue(driver.getPageSource().contains("Welcome Ripon")); 
assertTrue(driver.findElement(By.id("widget_205_after_login")).getText().matches("^[\\s\\S]*Welcome ripon[\\s\\S]*$")); 
संबंधित मुद्दे