Selenium:如何从html标记中获取文本,其中包含另一个标记

时间:2015-07-28 00:24:38

标签: html css selenium

<a class="spf-link current" href="/orders/returns?offset=0&limit=25">
<span class="pg-helpText">Page</span>
1
</a>

我需要在测试中读取值“1”。当我使用css-selector .spf-link.current获取文本时,它会让我“第1页”。我只需要'1'。如何从span标记中排除文本。

3 个答案:

答案 0 :(得分:0)

尝试以下方法:

//跨度[@class =&#34; PG-HELPTEXT&#34;并包含(text(),&#39; Page&#39;)] / follow-sibling :: span / span

答案 1 :(得分:0)

在标签之间自定义未标记文本是不正常的。

我建议您将值更改为所需的结果:

<a class="spf-link current" href="/orders/returns?offset=0&limit=25">1</a>

...当您想要在其他地方展示时,请将其设为var ThePage = "Page " + [the page number]

其他解决方案是将其作为div或另一个具有不同类别或ID的span包含在另一个标记中。

答案 2 :(得分:0)

您需要Javascript childNodes才能从节点获取文本。

  

childNodes属性返回节点子节点的集合,   作为NodeList对象。

     

集合中的节点按照它们在源中的显示进行排序   代码,可以通过索引号访问。索引从0开始。

WebElement element = driver.findElement(By
                           .cssSelector(".spf-link.current"));
String node_text=(String)((JavascriptExecutor)driver)
                           .executeScript("return arguments[0].childNodes[2].nodeValue",element);

当您运行JavascriptExecutor时,这应该为您提供值node_text。其他方法是在Page 1的基础上拆分文本space。但是,我更希望childNodes

如果您有任何疑问,请与我们联系。

相关问题