我在结果页面上有一个 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/