2012-12-17 12 views
5

हाय मैं क्षेत्र एक ड्रॉप डाउन जांच करने की आवश्यकता को देखते हुए मूल्यों चल रहा है लेकिन उन मूल्यों ड्रॉपडाउन बॉक्स में चयनित नहीं हैं, इसलिए इसके प्रदर्शित होने का नहीं। मैं तत्वक्या Webdriver में selenium.isElementPresent का विकल्प है

//table[contains(@id,'Field')]//tr[td//span[text()='Code']]/preceding-sibling::*[1]/td//select[contains(@id,'GSRCH_FLT')]/option[text()='not='] 

जो ब्राउज़र में ठीक तरह तत्व की पहचान करने के लिए Xpath निम्नलिखित है। लेकिन जब मैं निम्नलिखित webdriver विधि का उपयोग कर रहा यह

driver.findElement(By.xpath("//table[contains(@id,'Field')]//tr[td//span[text()='Code']]/preceding-sibling::*[1]/td//select[contains(@id,'GSRCH_FLT')]/option[text()='not=']")).isDisplayed(); 

अपने लौटने के बाद से यह झूठी बॉक्स में प्रदर्शित नहीं हो रही है सत्यापित करने के लिए।

यू मुझे इस के लिए विकल्प बता सकते हैं।

उत्तर

8

आप चाहते हैं: यदि तत्व मौजूद नहीं है, क्योंकि यह इंतजार नहीं होगा

private boolean isElementPresent(WebDriver driver, By by){ 
    return driver.findElements(by).count != 0; 
} 

findElements()findElement() की तुलना में इस के लिए बेहतर है। यदि आप निहित प्रतीक्षा के साथ चल रहे हैं, findElement() तत्व की तलाश में समय लगेगा (यह अपवाद है जिसे आप पकड़ रहे हैं), और इसमें कुछ समय लगेगा।

+0

शून्य के साथ रिटर्न परीक्षण समानता क्यों है यदि आप परीक्षण कर रहे हैं तो कोई तत्व मौजूद है या नहीं? –

+0

@ मैथ्यूलॉक डीओएच! धन्यवाद, तुलना उलटा हुआ था, अब यह तय हो गया है। –

4

मुझे पता चला कि WebDriver एक समारोह isElementPresent() कहा जाता है नहीं है। यह सेलेनियम-1.0 में उपयोग किए जाने वाले महत्वपूर्ण कार्यों में से एक था। WebDriver में इसे लागू करने के तुम सिर्फ नीचे वर्णित के रूप में एक विधि लिखने के लिए की जरूरत है। इसके बाद आप (आदि By.id, BY.name,) By किसी भी प्रकार की

private boolean isElementPresent(WebDriver driver, By by){ 
    try{ 
    driver.findElement(by); 
    return true; 
    }catch(NoSuchElementException e){ 
    return false; 
    } 
} 

और यहाँ कैसे आप इस समारोह

if (isElementPresent(by.id("btnSubmit")) { 
    // preform some actions 
} 

कॉल का एक उदाहरण है के साथ इस समारोह का उपयोग कर सकते उपरोक्त फ़ंक्शन पृष्ठ पर तत्व मिलने पर सत्य वापस आ जाएगा, अन्यथा यह झूठी वापसी करेगा।

+1

@Arun उपरोक्त कोड को पढ़ने के लिए आसान है और पुन: प्रयोज्य है। कोड में सुधार करने का एकमात्र और सुझाव है कि टाइमआउट शामिल है। चूंकि आमतौर पर जांच के लिए तत्व कुछ समय-फ्रेम होता है। –

+0

-1 'findElements के बजाय' findElement() '-साथ-समय समाप्ति के लिए()' -साथ गिनती। –

0
internal static bool IsElementPresent(IWebDriver driver, By by, int timeoutSeconds=10) 
    { 

     for (int second = 0; second< timeoutSeconds ; second++) 
     { 
      try 
      { 
       driver.FindElement(by); 
      } 
      catch (NoSuchElementException e) 
      { 
       Thread.Sleep(1000); 
       continue; 
      } 

      return true; 
     } 

     return false; 

    } 
0
की पुष्टि करने के लिए कि क्या एक तत्व पृष्ठ पर उपलब्ध है के लिए

उपयोग isDisplayed()

संबंधित मुद्दे