XPath :: सिबलिंग का अनुसरण करें


85

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

<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>

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

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

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

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

जवाबों:


124

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

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

//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


मैं Xpath चेकर का उपयोग फ़ायरफ़ॉक्स पर कर रहा हूँ
एड-सेमी-कॉलन

मैं यह परीक्षण करने के लिए इस्तेमाल किया। xpathtester.com/saved/b452f721-556c-4e9b-9758-1910b0871d4a
james31rock

1
शायद xpath चेकर काम नहीं करता है? मैंने कभी इसका इस्तेमाल नहीं किया और फ़ायरफ़ॉक्स स्थापित नहीं किया। Xpath मुझे केवल दूसरा td तत्व वापस करना चाहिए, जब पहले td तत्व में 'कलर डाइजेस्ट' है
james31rock

यदि आप मेरे HTML की जाँच करते हैं तो एक स्पेस "कलर डाइजेस्ट" है, मैंने आपके द्वारा भेजे गए लिंक की कोशिश की और आप देख सकते हैं कि दोनों TD वापस मिल रहे हैं।
ऐड-सेमी-कॉलोन्स

1
आह, मैं देख रहा हूं, मैं अपनी प्रतिक्रिया बदलने जा रहा हूं। माफ़ करना। आपको दूसरी ट्रे की तलाश होनी चाहिए, जिसमें 'कलर डाइजेस्ट' के बराबर td हो, तो आपको tr में पहली td की दूसरी सिबलिंग या दूसरी td को देखने की जरूरत है।
1931 को james31rock

6

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

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

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

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

अब, आप अपने इच्छित तत्व के रूप में 2 तत्व का उपयोग कर सकते हैं, जो एलिमेंट्स है। (1)


2

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

Chrome में (संभावित सफ़ारी भी) आप किसी तत्व का निरीक्षण कर सकते हैं, फिर उस टैग पर राइट क्लिक करें जिसे आप xpath प्राप्त करना चाहते हैं, फिर आप उस तत्व का चयन करने के लिए xpath की प्रतिलिपि बना सकते हैं।


2
हाँ, मुझे पता है कि समारोह में इन तत्वों की पुनरावृत्ति होती है बजाय इसके कि मैं एक मजबूत दृष्टिकोण बनाना चाहता हूं।
जोड़-अर्ध-कॉलन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.