如何排除XPATH嵌套SPAN类

时间:2014-09-04 12:17:14

标签: html selenium xpath

从以下Html代码中,我想只选择第一个span类Text ..

<span class="item_amount order_minibasket_amount order_full_minibasket">10 
    <span class="article">Article
        <i class="icon"> >
        </i>
    </span>
</span>

这是我目前的XPATH:

//span[contains(@class,'order_minibasket_amount')]

当我在Selenium Test中使用它时,我得到了整个SPAN TEXT ..赞:

10 Article >

我只想获得“10”篇文章..

AMOUNT(new PageElement(By.xpath("//span[contains(@class,'order_minibasket_amount')]/text()[1]"), "not such Element...."))

  public String getAmount() {
    return amount = PageObjectUtil.findAndInitElementInside(webElement, PageElements.AMOUNT.pe, amount, String.class);
}

非常感谢,

干杯, 科科

3 个答案:

答案 0 :(得分:1)

您想要的不能直接完成,您将不得不采用String操纵。类似的东西:

String completeString = driver.findElement(By.className("item_amount")).getText()
String endString = driver.findElement(By.className("article")).getText()
String beginString = completeString.replace(endString, "")

答案 1 :(得分:0)

您可以在末尾添加/text()

//span[contains(@class,'order_minibasket_amount')]/text()

此XPath不是选择span元素节点,而是选择文本节点的集合,它们是span元素的直接子节点。这应该是一组两个节点,一个包含&#34; 10&#34;,一个换行符和四个空格(目标跨度的开始标记和嵌套跨度的开始标记之间的文本),另一个包含换行符(在两个跨度的结束标记之间。如果您只想要第一个文本节点子节点(10,nl,空格),则使用

//span[contains(@class,'order_minibasket_amount')]/text()[1]

答案 2 :(得分:0)

现在我正在使用解决方案......但我对此并不满意。 : - (

    public String getAmount() {
    String tempAmount = PageObjectUtil.waitFindAndInitElement(PageElements.AMOUNT.pe).getText();
    String output = tempAmount.replaceAll("[a-zA-Z->]", "");
    return amount = output.trim();
}

欢呼声, 科科