2012-07-25 12 views
45

मेरे पास निम्नलिखित HTML संरचना है: मैं दूसरे रंग डाइजेस्ट तत्व निकालने के लिए एक मजबूत विधि बनाने की कोशिश कर रहा हूं क्योंकि डीओएम के भीतर इनमें से कई टैग होंगे।XPath :: निम्नलिखित सिब्लिंग प्राप्त करें

<table> 
    <tbody> 
    <tr bgcolor="#AAAAAA"> 
    <tr> 
    <tr> 
    <tr> 
    <tr> 
     <td>Color Digest </td> 
     <td>AgArAQICGQMVBBwTIRQHIwg0GUMURAZTBWQJcwV0AoEDAQ </td> 
    </tr> 
    <tr> 
     <td>Color Digest </td> 
     <td>2,43,2,25,21,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, </td> 
    </tr> 
    </tbody> 
</table> 

मैं दूसरा "रंग डाइजेस्ट" टीडी तत्व निकालने की कोशिश कर रहा हूं जिसमें डीकोडेड मान है।

मैंने निम्नलिखित xpath लिखा लेकिन दूसरा प्राप्त करने के बजाय मुझे दूसरा टीडी तत्व नहीं मिला।

//td[text() = ' Color Digest ']/following-sibling::td[2] 

और जब मैं इसे td [2] में td [1] में बदलता हूं तो मुझे दोनों तत्व मिलते हैं।

उत्तर

63

आपको दूसरी टीआर की तलाश करनी चाहिए जिसमें टीडी है जो 'रंग डाइजेस्ट' के बराबर है, तो आपको या तो टी में पहले टीडी या दूसरे टीडी के निम्नलिखित भाई को देखना होगा।

निम्नलिखित का प्रयास करें:

//tr[td='Color Digest'][2]/td/following-sibling::td[1] 

या

//tr[td='Color Digest'][2]/td[2] 

http://www.xpathtester.com/saved/76bb0bca-1896-43b7-8312-54f924a98a89

+0

उसी समस्या का प्रयास किया: इन दोनों को परिणाम –

+0

के रूप में प्राप्त करें मैं फ़ायरफ़ॉक्स –

+0

पर एक्सपैथ चेकर का उपयोग कर रहा हूं, मैंने इसका परीक्षण करने के लिए उपयोग किया। http://www.xpathtester.com/saved/b452f721-556c-4e9b-9758-1910b0871d4a – james31rock

0

/html/body/table/tbody/tr[9]/td[1]

क्रोम में (संभव सफारी भी) आप एक तत्व का निरीक्षण कर सकते, तो ठीक है, आप के लिए xpath प्राप्त करना चाहते हैं टैग पर क्लिक करें तो आप xpath कॉपी कर सकते हैं कि तत्व का चयन करने के लिए।

+0

Yeahe मुझे लगता है कि समारोह के रूप में जानते हैं 2 तत्व का उपयोग कर सकते इन तत्वों की पुनरावृत्ति बस के बजाय देखते हैं एक के लिए हो रही है मैं एक मजबूत दृष्टिकोण बनाना चाहता हूँ। –

+2

@ नल-हाइपोथिसिस: कृपया इसे अपने प्रश्न में जोड़ें ... – naveen

+0

बस प्रश्न को अपडेट किया गया –

1

आप xPath साथ तत्वों की सूची की पहचान करने के लिए जा सकते हैं:

//td[text() = ' Color Digest ']/following-sibling::td[1] 

थी एस आपको दो तत्वों की एक सूची देगा, आप दूसरे तत्व का उपयोग अपने इच्छित व्यक्ति के रूप में कर सकते हैं। उदाहरण के लिए:

List<WebElement> elements = driver.findElements(By.xpath("//td[text() = ' Color Digest ']/following-sibling::td[1]")) 

अब, आप अपने इच्छित तत्व है, जो है elements.get (1)