硒xpath刮混合内容html跨度

前端之家收集整理的这篇文章主要介绍了硒xpath刮混合内容html跨度前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试刮掉混合内容的span元素
<span id="span-id">
  <!--starts with some whitespace-->
  <b>bold title</b>
  <br/>
  text here that I want to grab....
</span>

这是一个标识跨度的抓取代码片段.它没有问题,但是webelement的文本字段是空白的.

IWebDriver driver = new FirefoxDriver();
driver.Navigate().GoToUrl("http://page-to-examine.com");
var query = driver.FindElement(By.XPath("//span[@id='span-id']"));

我已经尝试将/ text()添加到表达式中,该表达式也不返回任何内容.如果我添加/ b我会得到粗体文本的文本内容 – 这恰好是我不感兴趣的标题.

我确信有一点xpath魔法,这应该很容易,但到目前为止我还没找到它!或者,还有更好的方法?感激地收到任何评论.

解决方法

I’ve tried adding /text() to the expression which also returns nothing

这将选择上下文节点的所有text-node-children,并且其中有三个.

你所谓的“无”是最可能的第一个,这是一个只有空格的文本节点(因此你看到它中的“无”).

你需要的是:

//span[@id='span-id']/text()[3]

当然,还有其他可能的变化:

//span[@id='span-id']/text()[last()]

要么:

//span[@id='span-id']/br/following-sibling::text()[1]

基于XSLT的验证:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:template match="node()|@*">
     "<xsl:copy-of select="//span[@id='span-id']/text()[3]"/>"
 </xsl:template>

</xsl:stylesheet>

此转换只是输出XPath表达式选择的任何内容.应用于提供的XML文档时(注释已删除):

<span id="span-id">
    <b>bold title</b>
    <br/>
    text here that I want to grab....   
</span>

产生了想要的结果:

"
    text here that I want to grab....   
"

猜你在找的HTML相关文章