2013-12-08 13 views
5

के साथ एक विशिष्ट बटन को ढूंढने और क्लिक करने के लिए पाइथन और सेलेनियम का उपयोग करके मुझे वेबपृष्ठ पर एक विशिष्ट बटन को ढूंढने और क्लिक करने की आवश्यकता है। सामान्य परिस्थितियों में इस वेबपेजों कोडिंग के कारण आदेशोंपायथन, सेलेनियम

next = driver.find_element_by_css_selector(".next") 
next.click() 

कि इस मामले में काम नहीं करेगा के साथ किया जा सकता है। जहां दोनों बटन पिछले पृष्ठ की ओर अग्रसर हैं और अगली हिस्से में एक ही कक्षा का नाम है। इस प्रकार इस कोड को केवल जहाँ तक आगे पीछे पहले और दूसरे पेज

के बीच जाना होगा के रूप में मैं दो बटन अलग बताने के लिए एक ही रास्ता बता सकते हैं, कि बटन पिछले पृष्ठ पर प्रमुख

<li class="previous"> 
    #button 
</li> 
के भीतर निहित है

और एक कि अगले पृष्ठ की ओर जाता है के भीतर

<li class="next"> 
    #button 
</li> 

वहाँ होने का कोई रास्ता है निहित है सेलेनियम केवल का चयन करें और बटन है कि "अगले" ली वर्ग में निहित क्लिक करें?

पूरा बटन कोड:

पिछले बटन:

<li class="previous"> 
    <a class="next" rel="nofollow" onclick="qc.pA('nrForm', 'f76', 'QClickEvent', '1', 'f28'); return false;" href=""> 
     Previous 
    </a> 
</li> 

अगले बटन:

<li class="next"> 
    <a class="next" rel="nofollow" onclick="qc.pA('nrForm', 'f76', 'QClickEvent', '3', 'f28'); return false;" href=""> 
     Next 
    </a> 
</li> 

उत्तर

3

मुझे लगता है कि आप .find_element_by_xpath का उपयोग करना चाहिए()। उदाहरण के लिए:

next = driver.find_element_by_xpath("//li[@class='next']/a") 
prev = driver.find_element_by_xpath("//li[@class='previous']/a") 

या:

next = driver.find_element_by_xpath("//a[text()='Next']") 
prev = driver.find_element_by_xpath("//a[text()='Previous']") 
+2

मेरे पास कोई सेलेनियम अनुभव नहीं है, और थोड़ा सीएसएस अनुभव है, लेकिन मैंने सेलेनियम के बारे में एक प्रस्तुति देखी जिसमें एक बार कहा गया था कि सीएसएस का उपयोग आमतौर पर xpath का उपयोग करने से बेहतर होता है। – dstromberg

2

CSS चयनकर्ताओं के साथ:

next = driver.find_element_by_css_selector('li.next>a') 

सीएसएस चयनकर्ता शांत और उपयोगी होते हैं: http://www.w3schools.com/cssref/css_selectors.asp

XPATH, इतना नहीं है - यह केवल अंतिम उपाय के रूप में उपयोग किया जाना चाहिए।

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