浏览Selenium的分页,将项目添加到HashMap

时间:2016-11-30 13:17:13

标签: java list selenium selenium-webdriver pagination

我在结果页面上有一个WebElements列表,我需要提取并添加到HashMap。

网页上有一个看起来像这样的分页:1,2,3,4,5,Next。这些都是链接,当单击Next时,它将导航到第2页并在分页上显示6,同时删除1,依此类推。

    List<WebElement> pagination = driver.findElements(By.xpath("//div[@class='pagination-container']//a"));
        int s = pagination.size();
        for(int i=0;i<=s;i++){
            this.getAuthors();
                driver.get(Constants.url);
                Thread.sleep(5000);

            pagination = driver.findElements(By.xpath("//div[@class='pagination-container']//a"));
            pagination.get(i).click();
            Thread.sleep(5000);
        }

getAuthors()方法遍历页面上的必要元素并将它们添加到HashMap中。因此它将遍历分页列表中的所有页面,直到完成为止。它将返回到保存为Constants.url的页面1。

它到达第5页但后来卡住了,我不知道如何在其他6,7,8的例子中编码,每次点击Next按钮来访问它们,将它们添加到分页列表中。

注意:Thread.sleep方法用于启用页面时间来加载页面上的所有元素。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

你可以这样做,假设链接是你需要的<a> html元素

1创建一个Web元素列表,例如<a>个元素driver.findElements(By.tagName("a"))

2从最后一步检索的迭代列表,并检查您需要点击的特定链接的一些元信息,例如标题elements.get(i).getAttribute("title");

3比较标题是否是您需要的标题if (title.equals("Next Page")) {

3发送点击信号

以下是代码段

new WebDriverWait(
            driver, TIME_TO_WAIT).until(
                    ExpectedConditions.presenceOfElementLocated(
                            By.tagName("a")));
List<WebElement> elements = driver.findElements(By.tagName("a"));
for (int i = 0; i < elements.size(); i++) {
    String title = elements.get(i).getAttribute("title");
    if (title.equals("Next Page")) {
        elements.get(i).click();
        break;
    }
}