java - 使用 Selenium 通过分页导航将项目添加到 HashMap

标签 java list selenium selenium-webdriver pagination

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

网页上有这样的分页:1, 2, 3, 4, 5, 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 的其他示例中编写代码,每次都单击“下一步”按钮访问它们,将它们添加到分页列表中。

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

有什么想法吗?

最佳答案

你可以这样做,假设链接是 <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;
    }
}

关于java - 使用 Selenium 通过分页导航将项目添加到 HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40889413/

相关文章:

python - selenium.common.exceptions.WebDriverException : Message: Error loading page for the Firefox SSL

java - 为什么我的 mouseClicked() 计数器增加 2?

java - 如何管理字节流以及何时关闭流

java - 如何在循环之间跳过一键操作

使用子字符串检查字符串是否存在(使用链表)

java - 使用 Selenium 访问 <ul> 中的 HTML 元素

python - 无论如何,是否可以在没有显示器的情况下运行机器人框架测试?

java - Android - 我想从另一个 Activity 或类中调用 getText()

Python 不同长度、平均值和标准差的多个列表

.net - 实现具有最大项目数的 List(Of) 的最佳方法