我有一个网站,其中包含以下代码片段:
<div class="list_item_normal">
<div class="main_content">
<div class="img_wrap">
<a href="/home/Detaljer/9781118093757"><img alt="Miniaturebillede af omslaget til Operating System Concepts" src="/images/product_thumb/9781/118/093/9781118093757.jpg?1354045210" title="Miniaturebillede af omslaget til Operating System Concepts" /></a>
</div>
<div class="data_wrap">
<h4>
<!-- Added by sathiyaraj regarding E-book integration CR -->
<a href="/home/Detaljer/9781118093757">Operating System Concepts</a> <small style='background-color:yellow;'></small>
</h4>
<h5>
Abraham Silberschatz and Peter B. Galvin
(2013)
</h5>
<div class="imprint">
John Wiley & Sons, Limited
</div>
<div class="price">
610,00 kr.
</div>
</div>
</div>
我只需要获取h5标签中包含的内容。我在过去的30分钟里试图这样做,没有运气。我目前的代码如下:
content = driver.findElement(By.xpath("//div[contains(@class, 'content')]"));
List<WebElement> list
= content.findElements(
By.xpath("//div[contains(@class, 'list_item_normal')]"));
System.out.println(list.size()); // Just for debugging purposes
for (WebElement e : list) {
System.out.println(e.findElement(By.xpath("//h5")).getText());
}
driver.close();
}
它是一家书店,作者在h5标签内。现在使用上面的代码只生成10个相同作者的列表,即使他们中的许多人有不同的作者。我不知道我在哪里弄错了。
那么如何获取该特定标签内的数据?
编辑:
以下是整个页面HTML:http://pastebin.com/QALCvtaG
答案 0 :(得分:0)
嗯,我认为你的错误是试图在元素中找到元素,而不是在xpath中暗示。将代码中的行更正为以下内容,它应该可以正常工作。
System.out.println(e.findElement(By.xpath(".//h5")).getText());
您可能还需要在以下行中更正xpath:
List<WebElement> list = content.findElements(By.xpath(".//div[@class= 'list_item_normal']"));
我唯一改变的是我在每个xpath之前添加了一个点,用于在元素中查找元素。