Selenium C# - 通过span元素查找div元素文本

时间:2016-02-02 11:29:24

标签: c# selenium xpath

我想获得<div>元素的文本。 我唯一可以使用的是此<span>中的<div>元素。

<div>
    <span id="lblName" class="fieldTitle">Name</span>
    John
</div>

如何使用JohnlblName

接收Name

4 个答案:

答案 0 :(得分:1)

您可以使用xpath

span = driver.findElement(By.id("lblName"));
div = span.findElement(By.xpath(".."));

答案 1 :(得分:1)

您可以尝试://span[@id = 'lblName']/parent::div/text()

答案 2 :(得分:0)

这样的事情:

string xml = "<?xml version=\"1.0\"?>" + 
             "<div>" + 
             "<span id=\"lblName\" class=\"fieldTitle\">Name</span>" + 
             "</div>";

XDocument xdoc = XDocument.Parse(xml);

var parent = xdoc.Descendants().First(el => el.Name == "span" && 
                         el.Attribute("id") != null &&
                         el.Attribute("id").Value == "lblName").Parent;

答案 3 :(得分:0)

您无法通过Selenium获取文本节点。请尝试使用以下JS的解决方法:

IWebElement span = driver.FindElement(By.Id("lblName"));
IWebElement div = span.FindElement(By.XPath(".."));
string script = "var nodes = arguments[0].childNodes;" +
                "var text = '';" +
                "for (var i = 0; i < nodes.length; i++) {" +
                "    if (nodes[i].nodeType == Node.TEXT_NODE) {" +
                "        text += nodes[i].textContent;" +
                "    }" +
                "}" +
                "return text;";
string text = driver.GetJavaScriptExecutor().ExecuteScript(script, div).ToString();