2014-07-17 12 views

उत्तर

54

हां, आप इसे find_elements_by_css_selector("*") या find_elements_by_xpath(".//*") से प्राप्त कर सकते हैं।

हालांकि, यह सभी तत्व तत्व के लिए वैध उपयोग केस की तरह नहीं लगता है। यह सभी प्रत्यक्ष/अप्रत्यक्ष बच्चों को प्राप्त करने के लिए एक महंगा ऑपरेशन है। कृपया आगे बताएं कि आप क्या करने की कोशिश कर रहे हैं। एक बेहतर तरीका होना चाहिए।

from selenium import webdriver 

driver = webdriver.Firefox() 
driver.get("http://www.stackoverflow.com") 

header = driver.find_element_by_id("header") 

# start from your target element, here for example, "header" 
all_children_by_css = header.find_elements_by_css_selector("*") 
all_children_by_xpath = header.find_elements_by_xpath(".//*") 

print 'len(all_children_by_css): ' + str(len(all_children_by_css)) 
print 'len(all_children_by_xpath): ' + str(len(all_children_by_xpath)) 
22

हाँ, आप find_elements_by_ का उपयोग एक सूची में बच्चों तत्वों को पुनः प्राप्त कर सकते हैं। http://selenium-python.readthedocs.io/locating-elements.html

उदाहरण HTML: यहां अजगर बाइंडिंग देखें

<ul class="bar"> 
    <li>one</li> 
    <li>two</li> 
    <li>three</li> 
</ul> 

आप उपयोग कर सकते हैं find_elements_by_ तो जैसे:

parentElement = driver.find_element_by_class("bar") 
elementList = parentElement.find_elements_by_tag_name("li") 

आप एक विशिष्ट मामले के साथ मदद चाहते हैं, आप अपनी पोस्ट को संपादित कर सकते हैं एचटीएमएल के साथ आप माता-पिता और बच्चों के तत्वों को प्राप्त करना चाहते हैं।

+2

+1: बढ़िया! मैं केवल 'driver.find_elements_by_' का उपयोग कर रहा था - यह मेरे लिए नहीं हुआ था कि मैं इसे अपने बच्चों को खोजने के लिए व्यक्तिगत तत्वों पर भी इसका उपयोग कर सकता हूं। – ArtOfWarfare

+0

* find_element_by_class_name – Iorek

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