如何执行代码行,如果在我的if语句的按钮不存在



在这里的家伙的帮助下,这段代码工作了:

        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());
    }

情况如下:

  1. 在列表视图中,例如帐户模块列表视图,如果我有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());
}   

最新更新