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

时间:2015-07-07 07:37:33

标签: java selenium selenium-webdriver

在这里的人的帮助下,这段代码起作用了:

        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个记录。上面的代码块正在工作,因为我有按钮&#34; MORE&#34;。但是当我的listview只有5记录并且没有显示任何按钮,因为没有分页。代码不起作用。
  2. 请帮助我修改哪一行代码以使其工作,如果没有按钮可以点击分页,它仍然可以工作。

    谢谢!

2 个答案:

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