2013-11-20 4 views
5

क्या browser.find_elements_by_css_selector('input[type=text]') जैसे कॉल हमेशा WebElement ऑब्जेक्ट्स को वापस लौटाते हैं जो DOM को दर्शाता है?find_elements_by_ * फ़ंक्शन हमेशा डीओएम ऑर्डर को प्रतिबिंबित करते हैं?

मैं पूछता हूं क्योंकि मेरे पास एक टू-डू सूची-जैसी एप्लिकेशन है और ऑर्डर जो तत्वों को पृष्ठ पर दिखाई देता है (गतिशील रूप से जोड़ा गया) महत्वपूर्ण है, और शायद मैं गुदा हो रहा हूं लेकिन मैं इस व्यवहार को भाग के रूप में देख रहा हूं मेरे परीक्षण सूट का।

एनबी .: मैं संभवतः विभिन्न ब्राउज़रों में परीक्षण चलाऊंगा।

मेरे परीक्षण (unittest साथ अजगर):

def test_titles_should_appear_in_the_order_they_are_entered(self): 
    titles = ['title 1', 'title 2', 'title 3'] 
    for title in titles: 
     self._type_new_title(title).send_keys(Keys.RETURN) 
    inputs = self.browser.find_elements_by_css_selector('input[type=text].title') 
    # assumption: inputs will always reflect the DOM order, top to bottom 
    input_vals = [i.get_attribute('value') for i in inputs] 
    self.assertEqual(input_vals, titles) 
+1

अनजाने में बोलते हुए, मैंने कभी भी लौटा तत्व ऑर्डर मैच को अपने डीओएम स्थिति के साथ देखा है। अन्यथा जब मैं तत्वों की एक सूची बना देता हूं और मैं 'सूची [0]' निर्दिष्ट करता हूं, मैं वास्तव में भाग्यशाली हूं कि यह समय के बाद एक ही तत्व समय प्राप्त करता है। –

उत्तर

1

मेरे अनुभव में यह सच है, जो भी समझ में आता है, कि में FindElements तरीकों दस्तावेज़ लोकेटर के आधार पर मैचों की तलाश में पार्स करने के लिए जा रहे हैं।

इसके अतिरिक्त, भले ही वे डीओएम आदेश में बिल्कुल नहीं हैं, यह हर बार सुसंगत रहेगा, इसलिए आपको तदनुसार अपना परीक्षण लिखना सुरक्षित होना चाहिए।

हालांकि, ध्यान रखें कि जब भी आप एकाधिक मैचों पर ऑर्डर का उपयोग करते हैं, तो यदि आप इनपुट जोड़ते हैं या हटाते हैं, तो उस ऑर्डर को बदलने की संभावना है, और आपको तदनुसार परीक्षण अपडेट करना होगा।

+0

"भले ही वे डीओएम आदेश में बिल्कुल नहीं हैं, यह हर बार सुसंगत रहेगा" -क्या यह ब्राउज़र के बीच संगत होगा? – KnewB

+0

मेरे अनुभव में, हाँ। वेब ड्राइवर जावास्क्रिप्ट परमाणु तत्वों का पता लगाने के लिए उपयोग किए जाने वाले प्रत्येक ड्राइवर कार्यान्वयन के लिए समान होना चाहिए, जिसका अर्थ है कि यह सुसंगत होना चाहिए। – PocketDews

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