如何使用selenium java获取没有HTML标签的文本/值

时间:2017-11-10 02:41:42

标签: java selenium

从以下HTML内容

COLLSCAN

我想先读取值。我尝试使用以下命令

<div id="header_cart"><a href="http://store.demoqa.com/products-page/checkout/" title="Checkout" class="cart_icon">
    <em class="count">
            1                                             
    </em> 
<em class="item">item</em> 
| 
<span class="icon" style="margin-top: 0px;">Cart</span>Checkout<span class="shadow"></span></a>
</div>

我得到“item”而不是值“1”

请帮助我如何阅读没有html标签的值。

3 个答案:

答案 0 :(得分:0)

尝试使用.getAttribute("value");代替.getText()

答案 1 :(得分:0)

要从1标记中提取值<em>,您可以使用:

System.out.println(driver.findElement(By.xpath("//div[@id='header_cart']//em[@class='count']")).getAttribute("innerHTML"));

更新:

可能是驱动程序在浏览器呈现之前检查文本的速度太快。因此,请尝试按以下方式诱导ExplicitWait,即WebDriverWait

WebDriverWait cart_wait = new WebDriverWait(driver, 10);
cart_wait.until(ExpectedConditions.textToBePresentInElementLocated(By.xpath("//div[@id='header_cart']//em[@class='count']"), "1"));
System.out.println(driver.findElement(By.xpath("//div[@id='header_cart']//em[@class='count']")).getAttribute("innerHTML"));

答案 2 :(得分:0)

最简单的方法是使用CSS选择器。我认为你的定位器出于某种原因找到了另一个<em>。我已经在下面添加了一个等待,以防出现问题。 <em>内的文本充满了额外的空格,因此您可以添加trim()来清理文本。

WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement itemCount = wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("#header_cart em.count")));
System.out.println(itemCount.getText().trim());