selenium3.4 在不确定页面上某类web元素的数量的情况下,遍历元素

想要遍历一个列表,但是这个列表的总数是不固定的,一开始,发现列表上的单元格的xpath路径如下,特点就是只变动最后一个数字:
.//*[@id='top-submit']/ul/li[1]/a/strong
.//*[@id='top-submit']/ul/li[2]/a/strong
于是乎,我就这样写了代码:
int i=1;
while(driver.findElement(By.xpath(".//*[@id='top-submit']/ul/li["+i+"]/a/strong")).getText()!=null){
System.out.println(driver.findElement(By.xpath(".//*[@id='top-submit']/ul/li["+i+"]/a/strong")).getText());
i++;
}

后来发现,只要xpath不存在,java就会报错,就不会继续执行。所以这个方法不成立。

后来查看网页,终于找到一个可以成功操作的代码:

int i = 1; //定义需要遍历web元素的数量
String str = ""; //获取当前xpath对应的值
String laststr= driver.findElement(By.xpath(".//*[@id='top-submit']/ul/li[last()]/a/strong")).getText(); //最后一个web元素对应的值
System.out.println(laststr);
while(!(str.equals(laststr))){ //设置条件,不相等的时候值为true
//后台输出每次的内部邮件、发布流程的内容
str = driver.findElement(By.xpath(".//*[@id='top-submit']/ul/li["+i+"]/a/strong")).getText();//对str赋值
System.out.println(str);
i++;
}
System.out.println(i-1); //需要减掉1 ,表示的是该种web元素的总数。


你可能感兴趣的:(selenium)