请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

页数执行有问题

public void test01() {
List pageNum = getPageNum();
System.out.println(pageNum.size());
for (int j = 0; j < pageNum.size()-1; j++) {
List courseList = driver.findElements(By.className(“shizan-name”));
for (int i = 0; i < courseList.size(); i++) {
System.out.println(courseList.get(i).getText());
courseList.get(i).click();
sleep(500);
driver.navigate().back();
sleep(500);
courseList = driver.findElements(By.className(“shizan-name”));
}
driver.findElement(By.linkText(“下一页”)).click();
sleep(3000);
}
}

public List getPageNum() {
List pageNumList = new ArrayList();
List aElementList = driver.findElement(By.className(“page”)).findElements(By.tagName(“a”));
for (WebElement aElement : aElementList) {
String pageNum = aElement.getText();
if (isNum(pageNum) == true) {
pageNumList.add(Integer.valueOf(pageNum).intValue());
}
}
return pageNumList;
}

public boolean isNum(String pageNum) {
	Pattern pattern = Pattern.compile("[0-9]*");
	Matcher isNum = pattern.matcher(pageNum);
	if (isNum.matches()) {
		return true;
	} else {
		return false;
	}
}

代码和上课的一样,但是实际执行的时候出现以下问题图片描述
这段代码循环完后,并没有跳到第7页就结束了,等于少了一页
图片描述
而这段代码,我把-1删掉,执行完以后页码是对的,但是最后报了一个错,找不到linktest=“下一页”。这是怎么回事

正在回答 回答被采纳积分+3

1回答

Mushishi 2020-09-08 19:15:28

1、你去把你的获取到的总页数 pagenum.size 打印出来 看一下你的个数 然后确认这个数据和你的实际数据是不是一样的 有可能不一样 中间有。。。的那种

2、每次自动执行点击下一步的时候看一下 看一下页面的变化。就是到当前页面的时候去判断一下有没有下一页,如果有那么直接点击。没有就暂停 看一下是不是

0 回复 有任何疑惑可以回复我~
  • 提问者 已婚单身狗 #1
    这些我都试过,pagenum.size得到是7,按照一开始代码应该执行6次下一页,但是实际就是执行5次,也不知道为什么。现在我的解决方案是把-1给去掉,然后循环里判断j == pageNum.size() - 1,是就跳出循环。但是原来的问题还是没解决。。。。
    回复 有任何疑惑可以回复我~ 2020-09-09 09:03:12
  • Mushishi 回复 提问者 已婚单身狗 #2
    你把你每次循环的下标都打印出来看一下。还有通过获取属性看一下属性有没有变化。
    回复 有任何疑惑可以回复我~ 2020-09-09 09:28:47
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信