本文介绍了想要检索给定WebElement的Xpath的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
使用Selenium WebDriver,我可以在页面中找到所有Web元素的列表.我想编写一个函数,该函数将向我返回所传递元素的XPath字符串.
Using Selenium WebDriver, I am having a list of all web elements in the page. I want to write one function which will return me the XPath string of passed element.
函数调用将类似于:-String XpathOfElement = myWebDriver.getXpath(My_Web_Element)
Call for Function will be like:-String XpathOfElement = myWebDriver.getXpath(My_Web_Element)
提示:-我认为我们可以使用javascript(使用JavaScriptExecuter).但是不熟悉javascript.
Hint :- I think we can use javascript(using JavaScriptExecuter). But not familiar with javascript.
推荐答案
选中此 post ,我编写了获取绝对XPath的代码.
Check this post, I wrote code to get an absolute XPath.
public static String getAbsoluteXPath(WebElement element)
{
return (String) ((JavascriptExecutor) driver).executeScript(
"function absoluteXPath(element) {"+
"var comp, comps = [];"+
"var parent = null;"+
"var xpath = '';"+
"var getPos = function(element) {"+
"var position = 1, curNode;"+
"if (element.nodeType == Node.ATTRIBUTE_NODE) {"+
"return null;"+
"}"+
"for (curNode = element.previousSibling; curNode; curNode = curNode.previousSibling) {"+
"if (curNode.nodeName == element.nodeName) {"+
"++position;"+
"}"+
"}"+
"return position;"+
"};"+
"if (element instanceof Document) {"+
"return '/';"+
"}"+
"for (; element && !(element instanceof Document); element = element.nodeType == Node.ATTRIBUTE_NODE ? element.ownerElement : element.parentNode) {"+
"comp = comps[comps.length] = {};"+
"switch (element.nodeType) {"+
"case Node.TEXT_NODE:"+
"comp.name = 'text()';"+
"break;"+
"case Node.ATTRIBUTE_NODE:"+
"comp.name = '@' + element.nodeName;"+
"break;"+
"case Node.PROCESSING_INSTRUCTION_NODE:"+
"comp.name = 'processing-instruction()';"+
"break;"+
"case Node.COMMENT_NODE:"+
"comp.name = 'comment()';"+
"break;"+
"case Node.ELEMENT_NODE:"+
"comp.name = element.nodeName;"+
"break;"+
"}"+
"comp.position = getPos(element);"+
"}"+
"for (var i = comps.length - 1; i >= 0; i--) {"+
"comp = comps[i];"+
"xpath += '/' + comp.name.toLowerCase();"+
"if (comp.position !== null) {"+
"xpath += '[' + comp.position + ']';"+
"}"+
"}"+
"return xpath;"+
"} return absoluteXPath(arguments[0]);", element);
}
这篇关于想要检索给定WebElement的Xpath的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!