使用Selenium从Header(<h> </h>)获取数据

时间:2014-05-01 10:23:35

标签: java html css selenium

我有一个网站,其中包含以下代码片段:

<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

1 个答案:

答案 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之前添加了一个点,用于在元素中查找元素。