javascript - क्या सेलेनियम वेबड्राइवर में जावास्क्रिप्ट का उपयोग करके XPath द्वारा तत्व प्राप्त करने का कोई तरीका है?




selenium-webdriver document.evaluate (4)

अपने उद्देश्य को मानना ​​है कि स्क्रीन मैप्स के लिए अपने एक्सपैथ प्रश्नों को विकसित और परीक्षण करना है। फिर या तो क्रोम के डेवलपर टूल का उपयोग करें। यह आपको मैचों को दिखाने के लिए xpath क्वेरी चलाने की अनुमति देता है। या फ़ायरफ़ॉक्स में> 9 आप वेब डेवलपर टूल्स कंसोल के साथ एक ही काम कर सकते हैं। पहले संस्करण में x-path-finder या Firebug

मैं कुछ ढूंढ रहा हूं:

getElementByXpath(//html[1]/body[1]/div[1]).innerHTML

मुझे जेएस का उपयोग करके तत्वों के आंतरिक HTML को प्राप्त करने की आवश्यकता है (सेलेनियम वेबड्राइवर / जावा में इसका उपयोग करने के लिए, क्योंकि WebDriver इसे स्वयं नहीं ढूंढ सकता), लेकिन कैसे?

मैं आईडी विशेषता का उपयोग कर सकता हूं, लेकिन सभी तत्वों में आईडी विशेषता नहीं है।

[निर्धारित]

मैं जावा में यह करने के लिए jsoup का उपयोग कर रहा हूँ। यह मेरी जरूरतों के लिए काम करता है। उत्तर के लिए धन्यवाद। :)


आप document.evaluate उपयोग कर सकते हैं। मूल्यांकन document.evaluate :

एक XPath अभिव्यक्ति स्ट्रिंग का मूल्यांकन करता है और यदि संभव हो तो निर्दिष्ट प्रकार का परिणाम देता है।

यह w3-standardized और संपूर्ण दस्तावेज़ है: https://developer.mozilla.org/en-US/docs/Web/API/Document.evaluate

function getElementByXpath(path) {
  return document.evaluate(path, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
}

console.log( getElementByXpath("//html[1]/body[1]/div[1]") );
<div>foo</div>

https://gist.github.com/yckart/6351935

मोज़िला डेवलपर नेटवर्क पर भी एक महान परिचय है: https://developer.mozilla.org/en-US/docs/Introduction_to_using_XPath_in_JavaScript#document.evaluate


क्रोम कमांड लाइन एपीआई (एकाधिक तत्वों का चयन करने के लिए) से $ x की तरह कुछ के लिए प्रयास करें:

var xpath = function(xpathToExecute){
  var result = [];
  var nodesSnapshot = document.evaluate(xpathToExecute, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null );
  for ( var i=0 ; i < nodesSnapshot.snapshotLength; i++ ){
    result.push( nodesSnapshot.snapshotItem(i) );
  }
  return result;
}

इस एमडीएन सिंहावलोकन में मदद मिली: https://developer.mozilla.org/en-US/docs/Introduction_to_using_XPath_in_JavaScript


क्रोम देव टूल्स में आप निम्न को चला सकते हैं:

$x("some xpath")





document.evaluate