我在结果页面上有一个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方法用于启用页面时间来加载页面上的所有元素。
有什么想法吗?
答案 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;
}
}