2009-10-15 15 views
26

मैं अपने जीडब्ल्यूटी ऐप का परीक्षण करने के लिए सेलेनियमआरसी का उपयोग करने की कोशिश कर रहा हूं और सीएसएस चयनकर्ताओं का उपयोग करके तत्वों से मिलान करने की कोशिश कर रहा हूं।मैं अपने सीएसएस चयनकर्ता से मेल खाने वाले तत्वों की संख्या कैसे गिन सकता हूं?

मैं निम्नलिखित HTML में सक्षम बटन की संख्या गिनना चाहता हूं।

एक बटन अगर यह class="x-panel-btn-td " के साथ एक <td> किया जा रहा है अगर यह class="x-panel-btn-td x-hide-offsets" के साथ एक <td> किया जा रहा है सक्षम है और विकलांग है।

तो मूल रूप से, मैं कक्षा x-panel-btn-td के साथ सभी <td> एस के तहत बटनों की संख्या पुनर्प्राप्त करना चाहता हूं।

<table cellspacing="0"> 
    <tbody> 
    <tr> 
     <td id="ext-gen3504" class="x-panel-btn-td "> 
      <em unselectable="on"> 
       <button id="ext-gen3506" class="x-btn-text" type="button">OK</button> 
      </em> 
     </td> 
     <td id="ext-gen3512" class="x-panel-btn-td x-hide-offsets"> 
      <em unselectable="on"> 
       <button id="ext-gen3506" class="x-btn-text" type="button">Yes</button> 
      </em> 
     </td> 
     <td id="ext-gen3520" class="x-panel-btn-td"> 
      <em unselectable="on"> 
       <button id="ext-gen3506" class="x-btn-text" type="button">No</button> 
      </em> 
     </td> 
     <td id="ext-gen3528" class="x-panel-btn-td x-hide-offsets"> 
      <em unselectable="on"> 
       <button id="ext-gen3506" class="x-btn-text" type="button">Cancel</button> 
      </em> 
     </td> 
    </tr> 
    </tbody> 
</table> 
+0

FYI करें, नीचे स्क्रॉल कृपया मेरा उत्तर देखने के लिए आप देख रहे हैं Webdriver बराबर – gorbysbm

उत्तर

15

जहां तक ​​मुझे पता है कि आप सीएसएस चयनकर्ताओं का उपयोग करके ऐसा नहीं कर सकते हैं, लेकिन सेलेनियम में XPath द्वारा गिनने के लिए एक आदेश है।

verifyXpathCount | //td[contains(@class, 'x-hide-offsets')]//button | 2 

सेलेनियम आर सी (जावा) में इस तरह

assertEquals(selenium.getXpathCount("//td[contains(@class, 'x-hide-offsets')]//button"), 2); 
+0

इसे उत्तर के रूप में स्वीकार करते हुए क्योंकि यह सेलेनियम शर्तों में अधिक सीधे आगे है। –

+0

यही मुझे चाहिए, धन्यवाद! – huy

+1

उपयोगी, लेकिन मूल शीर्षक सीएसएस समकक्ष के लिए पूछ रहा था, XPath नहीं। – David

2

यह अपेक्षाकृत सरल होना चाहिए। आप इसे कई तरीकों से कर सकते हैं लेकिन मैं डिफॉल्टसेलेनियम में getEval(...) का उपयोग करने का सुझाव दूंगा।

कुछ जावास्क्रिप्ट लिखें कि:

  1. आईडी से सभी तत्वों हो जाता है: देखने के लिए अगर यह सक्षम है
  2. यदि यह सक्षम है, एक संख्या में भी वृद्धि सभी तत्वों और चेक के माध्यम से
  3. दोहराता ext-gen3506
  4. गिनती "वापसी"।

आम तौर पर, getEval(...) अंतिम वक्तव्य के मूल्य को वापस कर देगा जो ... ... जो आपको गिनती देना चाहिए।

+0

बटन के लिए नहीं होगा एक ही आईडी है ... (मैं नकल चिपकाया tht बटन टैग और इसलिए कोड स्निपेट में प्रदर्शित एक ही आईडी। मेरा बुरा।) मुझे टाइप बटन के सभी तत्व मिलना चाहिए। –

1

लगेगा के बाद से सेलेनियम फ़ायरफ़ॉक्स का हिस्सा है और बाद के चयनकर्ता एपीआई एक समर्थन कर रहा है: निम्न आदेश दो विकलांग बटन देखते हैं की पुष्टि करेगा इस तरह एक परीक्षण का उपयोग कर एक सीएसएस लोकेटर की गिनती मैचों को आसान बनाने में कर सकते हैं:

verifyEval | window.document.querySelectorAll("your#css > selector.here").length | 4 

इस उदाहरण गिनती में निश्चित रूप से 4 होने के लिए, सत्यापित है।

+0

क्या यह आईई जैसे अन्य ब्राउज़रों के लिए काम करता है? हम आदर्श रूप से एक क्रॉस ब्राउज़र समाधान चाहते हैं। – David

+0

नियमित रूप से सेलेनियम आरसी एपीआई कमांड के विपरीत, इस विधि के बारे में ध्यान देने योग्य एक बात, आप लोकेटर के लिए उपसर्ग के रूप में "css =" को छोड़ देते हैं। – David

+0

@ डेविड: http://caniuse.com/#feat=queryselector – soletan

7

सेलेनियम के नए संस्करणों के साथ, एक समारोह GetCSSCount (स्ट्रिंग लोकेटर) है। बस सोचा था कि इस सवाल का एक अद्यतन चयनकर्ता एपीआई/window.document.querySelectorAll के बारे में पोस्ट करने के लिए उपयोगी

+0

कोई भी जानता है कि विशेष रूप से सेलेनियम के कौन से संस्करण इस पेशकश करते हैं? और सेलेनियम आरसी और वेबड्राइवर में? या केवल वेब ड्राइवर? – David

+0

इसके अलावा, पहले पूछना भूल गया, सर्वर जेएआर, क्लाइंट कोड बाइंडिंग, और/या आईडीई के मामले में सेलेनियम के कौन से संस्करण। – David

10

यह अब भी लागू किया गया है (बिना Selenium Webdriver API में कोई भी अतिरिक्त जावास्क्रिप्ट जादू आवश्यक है) चूंकि Google अभी भी शीर्ष प्रश्न के रूप में इस प्रश्न से लिंक करता है, भले ही सेलेनियम आरसी को वेबड्राइवर द्वारा प्रतिस्थापित किया गया हो, उम्मीद है कि यह किसी को समय बचाता है।

उदाहरण जावा कोड:

int locatorElementSize = driver.findElements(By.cssSelector("yourCSSLocator")).size(); 
संबंधित मुद्दे