从以下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标签的值。
答案 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());