查找Xpath - 用于没有HTML标记的文本

时间:2014-11-27 13:48:28

标签: html xml xpath selenium-webdriver

    <p class="result-price">
    <span>Price</span>
    $25.00 |
    <span>Member Price</span>
    $25.00
    <span>(0% discount)</span>
    </p>
    <p class="result-rating">

从上面的HTML标签中你可以注意到$ 25.00 |只是一个文本,并没有与任何HTML标签相关联,我编写了以下x路径来检索它:

//div[contains(@data-title,'Rafael B.: Arrangement and Composition')]/div[3]/p[1]/text() [2]。

它确实提取了文本,但在xpath检查器中,结果显示在容器中。 当我在我的脚本中使用相同的x路径时,它不会检索文本值。

有人可以请求帮助。看起来像文本在容器/文本区域

3 个答案:

答案 0 :(得分:5)

这是一种检索价格的方法:

//span[text()="Price"]/following-sibling::text()[1]

//p[@class="result-price"]/span[1]/following-sibling::text()[1]

答案 1 :(得分:0)

selenium webdriver不可能直接提取这样的东西。因为,即使它可能显示为导致元素的xpath(使用Firepath时),但它仍然会引发 InvalidSelectorException 。因此,我认为获取文本的唯一方法是获取父节点的innerHTML /文本,然后使用“substring()”“split”来提取所需的文本。

根据上面的html代码段,您可以使用以下 Java代码将输出设为“$ 25.00 |”: -

String text = driver.findElement(By.xpath("//p[@class='result-price']")).getText().substring(6, 14); // Output will be $25.00 |

System.out.println(text);

答案 2 :(得分:0)

Here the easiest way:

//p[contains(.,'$25.00')]

or you can find any text like below

//p[contains(.,'%replaceText%')]