在这里的人的帮助下,这段代码起作用了:
boolean clickMore = true;
while(clickMore == true) {
List<WebElement> button1 = driver.findElements(By
.xpath("/html/body/div[1]/div/div[3]/div/div/div[1]/div/div[2]/div[2]/div/div[4]/button"));
if(button1.size()>0) {
button1.get(0).click();
Thread.sleep(4000);
}else {
clickMore = false;
}
WebElement present = driver.findElement(By.xpath("/html/body/div[1]/div/div[3]/div/div/div[1]/div/div[2]/div[2]/div/div[3]/div/table/tbody"));
List<WebElement> list = present.findElements(By.xpath("/html/body/div[1]/div/div[3]/div/div/div[1]/div/div[2]/div[2]/div/div[3]/div/table/tbody/tr"));
System.out.println("Total Number of TR: " + list.size());
}
情况如下:
请帮助我修改哪一行代码以使其工作,如果没有按钮可以点击分页,它仍然可以工作。
谢谢!
答案 0 :(得分:1)
你可以a)用try / catch块环绕按钮点击或b)首先检查显示的按钮。
方法(a)
try {
button1.click();
} catch(NoSuchElementException e) {
clickMore = false;
}
或(b)
if(button1.isDisplayed()) {
button1.click();
else {
clickMore = false;
}
我还建议尝试使用更精确的按钮选择器,而不是通过列表索引访问它。
答案 1 :(得分:0)
我探索上面提到的代码,我发现它有点困难。当我通过Xpath搜索button1时,即使在前端没有查看/可见,它似乎也存在。一个心灵的朋友saisd也许是一个HTML问题。
所以我再次尝试但不使用xpath,我使用了linkText
并且它有效。
提示,尝试使用其他功能,而不仅仅是xpath或id,尝试探索其他功能我不知道它们是如何完全不同的,但根据我的经验,有些情况下,如果你使用xpath它有时不起作用,我必须探索使用另一个才能工作。
我的代码现在是:
boolean clickMore = true;
while(clickMore == true){
List<WebElement> button1 = driver.findElements(By
.linkText("More gate meters and service points..."));
System.out.println(button1.size());
if(button1.size() > 0){
button1.get(0).click();
Thread.sleep(4000);
}else{
clickMore = false;
}
}
List<WebElement> list = driver.findElements(By
.xpath("/html/body/div[1]/div/div[3]/div/div/div[1]/div/div[2]/div[2]/div/div[3]/div/table/tbody/tr"));
System.out.println("Total Number of TR: " + list.size());
}