从以下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);
}
非常感谢,
干杯, 科科
答案 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();
}
欢呼声, 科科