在这里的家伙的帮助下,这段代码工作了:
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());
}
情况如下:
- 在列表视图中,例如帐户模块列表视图,如果我有100的记录。上面的代码块是工作的,因为我有按钮"更多"。但是当我的列表视图只有5条记录,没有按钮显示,因为没有分页。代码不工作
请帮助哪一行代码我应该修改它的工作,如果没有按钮点击分页,它仍然会工作。
谢谢!
您可以a)用try/catch块环绕按钮单击或b)首先检查是否显示按钮。
方法(一)
try {
button1.click();
} catch(NoSuchElementException e) {
clickMore = false;
}
或(b)
if(button1.isDisplayed()) {
button1.click();
else {
clickMore = false;
}
我还建议尝试使用更精确的按钮选择器,而不是通过其列表索引访问它。
我研究了上面提到的代码,发现有点困难。当我通过Xpath搜索button1时,即使它在前端未被查看/可见,它似乎也存在。我的一个朋友说可能是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());
}