如何循环按钮,如果它存在,然后单击,如果没有,然后继续代码

时间:2015-07-07 03:03:17

标签: java selenium

我是这个领域的新手,我想问一下如果我想要实现这个场景我怎么能循环:( JAVA代码涉及硒和WEBDRIVER)

  • 我在列表视图中,例如帐户模块。然后在帐户模块中,如果有一个分页(点击更多帐户的按钮)那么我将点击它,当列表视图中没有看到更多的分页时,我将执行一个代码块。

  • 如果列表视图中没有分页,那么我将自动执行代码块。

这是我的代码:

    WebElement more = driver.findElement(By.xpath("/html/body/div[1]/div/div[3]/div/div/div[1]/div/div[2]/div[2]/div/div[4]"));
    List<WebElement> button = more.findElements(By.xpath("/html/body/div[1]/div/div[3]/div/div/div[1]/div/div[2]/div[2]/div/div[4]/button"));
    for(WebElement clicks:button){
        for(int i=0; i!=100 ;i++){
            if(clicks.isEnabled()){
                driver.findElement(By.xpath("/html/body/div[1]/div/div[3]/div/div/div[1]/div/div[2]/div[2]/div/div[4]/button")).click();
            }else{
                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());
            }
            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 个答案:

答案 0 :(得分:1)

使用try-catch结构检查分页元素是否存在(如果元素不存在则捕获错误)。 如果该元素不存在,则将给出错误,因此执行将永远不会到达else块的内容。因此,else块中的所有内容都应该位于catch块中,如果不存在分页元素,将执行该块。