从IwebElement中提取Xpath值



我需要来自iweelement的Xpath值。有人能帮我一下吗?PFB代码

IWebElement webElement;
if (!string.IsNullOrEmpty(webElement.GetAttribute("id")))
            {
                searchprop.Add("Id", webElement.GetAttribute("id"));
            }
        if (!string.IsNullOrEmpty(webElement.GetAttribute("XPath")))
        {
            searchprop.Add("XPath", webElement.GetAttribute("XPath"));
        }

在这里,很明显我不能使用" webelelement . getattribute (" Xpath ")"来获取Xpath值。因为Xpath不是属性。与ID值类似,我也需要Xpath。我怎么得到它呢?

也许这个方法可以解决你的问题。

public String GetElementXPath(IWebDriver driver, IWebElement element)
{
    String javaScript = "function getElementXPath(elt){" +
                            "var path = "";" +
                            "for (; elt && elt.nodeType == 1; elt = elt.parentNode){" +
                                "idx = getElementIdx(elt);" +
                                "xname = elt.tagName;" +
                                "if (idx > 1){" +
                                    "xname += "[" + idx + "]";" +
                                "}" +
                                "path = "/" + xname + path;" +
                            "}" +
                            "return path;" +
                        "}" +
                        "function getElementIdx(elt){" +
                            "var count = 1;" +
                            "for (var sib = elt.previousSibling; sib ; sib = sib.previousSibling){" +
                                "if(sib.nodeType == 1 && sib.tagName == elt.tagName){" +
                                    "count++;" +
                                "}" +
                            "}" +
                            "return count;" +
                        "}" +
                        "return getElementXPath(arguments[0]).toLowerCase();";
    return (String)((IJavaScriptExecutor)driver).ExecuteScript(javaScript, element);
}

最新更新