वहाँ मूलतः इस विशेष चुनौती से निपटने के लिए तीन तरीके हैं:
browser.span(:text => "Text")
आप पाठ का ही हिस्सा जानते हैं कि आप रेगुलर एक्सप्रेशन का उपयोग कर सकते हैं। ज़ेल्जको ने पर आधारित जैसे ज्ञात पाठ के आधार पर पहले को संबोधित किया है। एडम सबसे आम तरीका पते, क्या संलग्न या तत्व मैं तीसरा रास्ता है, जो है को संबोधित करेंगे युक्त क्या है संलग्न द्वारा या तत्व बगल में।
यदि आपके पास एक ज्ञात तत्व है जो आपके अंदर है, तो आप इसके साथ शुरू कर सकते हैं और 'कंटेनर' तत्व प्राप्त करने के लिए .parent
विधि का उपयोग कर सकते हैं। यह एक तालिका पंक्ति के रूप में एक सामान्य कंटेनर के माध्यम से आप चाहते हैं पाने के लिए .parent का उपयोग करके 'भाई' तत्व खोजने के लिए भी इस्तेमाल किया जा सकता है। पहला उपयोग काफी स्पष्ट है, लेकिन दूसरा टेबल के साथ काम करते समय शायद अधिक आम और बहुत उपयोगी है।
उदाहरण के लिए मान लें कि आपके पास डेटा की कई पंक्तियों वाली एक तालिका है जहां एक कॉलम अद्वितीय भाग संख्या है, और एक अन्य कॉलम में "कार्ट में जोड़ें" लिंक हैं।अब, आप अपने कार्ट में एक विशिष्ट भाग जोड़ना चाहते हैं, तो आप इस्तेमाल कर सकते हैं सूचकांक पाठ 'कार्ट में जोड़ें' के साथ संयुक्त यह यह है कि विशिष्ट पाठ के साथ 5 वीं लिंक किया जा रहा है के आधार पर की तरह कोड का उपयोग कर
browser.link(:text => 'add to cart', :index => 4).click
लेकिन यह भंगुर है क्योंकि जैसे ही परिणाम बदलते हैं, (जो लाइव डेटा के साथ बहुत कुछ हो सकता है) आपका हिस्सा अब उस तालिका में 5 वां नहीं है, और आपका परीक्षण टूट जाएगा। आपको कुछ सत्यापन की आवश्यकता होगी जिसे आपने सही हिस्सा पाया है और उस पंक्ति पर कुछ और नहीं। हालांकि, watir में आप कुछ इस तरह कर सकते हैं:
browser.cell(:text => 'Part no. 123-45').parent.link(:text => 'add to cart').click
एक मेज सेल के मामले में, सेल की मूल आम तौर पर एक तालिका पंक्ति हो जाएगा, और इस प्रकार सादे अंग्रेजी में इस 'सेल को खोजने के लिए अनुवाद इसमें 'भाग संख्या 123-45' के साथ, और उसके बाद उसी पंक्ति में 'कार्ट में जोड़ें' लिंक ढूंढें और क्लिक करें। (हालांकि मुझे लगता है कि आपने कोड को पढ़कर बाहर निकाला है।)
आप इसका उपयोग किसी भी 'भाई' या यहां तक कि केवल 'पैरेंट' पाने के लिए कर सकते हैं जहां ऑब्जेक्ट के आगे या उसके भीतर कुछ अद्वितीय तत्व है आपको बातचीत करने की ज़रूरत है।
आप शायद एक्सपैथ के साथ ऐसा कुछ कर सकते हैं, लेकिन पांच हफ्ते बाद कोड पढ़ने के दौरान शुभकामनाएं इससे बाहर निकलती हैं। यह एक कारण है कि मैं वॉटर और वाटिर-वेबड्राइवर बनाम सेलेनियम को काफी पसंद करता हूं।
ध्यान दें कि यदि आप वॉटर के पुराने संस्करणों का उपयोग कर रहे हैं तो यह केवल पहला अवधि है जो वॉटर 2.x या वॉटर-वेबड्राइवर के साथ एक आधारित इंडेक्सिंग का उपयोग करता है जो शून्य आधारित इंडेक्सिंग (रूबी की तरह) का उपयोग करता है: index => 1' div –