मैं सेलेनियम के साथ एक जटिल जावास्क्रिप्ट इंटरफ़ेस का परीक्षण करने की कोशिश कर रहा हूं (पायथन इंटरफ़ेस का उपयोग करके, और कई ब्राउज़रों में)। मेरे पास फॉर्म के कई बटन हैं:
<div>My Button</div>
मैं "मेरा बटन" (या गैर-केस-संवेदी, आंशिक मिलान जैसे "मेरा बटन" या "बटन") के आधार पर बटन खोजना चाहूंगा
मुझे यह आश्चर्यजनक रूप से मुश्किल लग रहा है, जिस हद तक मुझे लगता है कि मुझे कुछ स्पष्ट याद आ रहा है। मेरे पास अब तक की सबसे अच्छी चीज़ है:
driver.find_elements_by_xpath('//div[contains(text(), "' + text + '")]')
हालांकि यह मामला संवेदनशील है। दूसरी चीज़ जो मैंने कोशिश की है, वह पृष्ठ के सभी divs के माध्यम से पुनरावृत्त कर रही है, और element.text संपत्ति की जाँच कर रही है। हालाँकि, हर बार आपको फॉर्म की एक स्थिति मिलती है:
<div class="outer"><div class="inner">My Button</div></div>
div.outer में टेक्स्ट के रूप में "My Button" भी है। THAT को ठीक करने के लिए, मैंने यह देखने की कोशिश की है कि div.outer div.inner का माता-पिता है, लेकिन यह पता नहीं लगा सका कि वह कैसे (element.get_element_by_xpath ('..') एक तत्व के माता-पिता को लौटाता है, लेकिन यह div.outer के बराबर परीक्षण नहीं)। साथ ही, पृष्ठ पर सभी तत्वों के माध्यम से पुनरावृत्ति वास्तव में धीमी प्रतीत होती है, कम से कम क्रोम वेबड्राइवर का उपयोग करते हुए।
विचार?
संपादित करें: यह सवाल थोड़ा अस्पष्ट है। यहां एक और अधिक विशिष्ट संस्करण पूछा (और उत्तर दिया गया): बाल तत्व पाठ को शामिल किए बिना सेलेनियम वेबड्राइवर (पायथन एपी के माध्यम से) में एक तत्व का पाठ कैसे प्राप्त करें?