什么是更快的处理分页方法?

时间:2014-10-21 20:12:59

标签: java selenium selenium-webdriver pagination

在我正在测试的Web应用程序中,我有一个页面上显示的元素列表。根据列表中元素的数量,列表将变为分页。

分页是这样的:

  • 如果有1页没有分页。
  • 如果有2页,则页面底部会出现下一个(>)按钮。
  • 如果有3页或更多页面,除了下一个按钮(>)之外,还会有最后一页按钮(>>)。

我目前正在使用以下方法来确保始终到达列表的最后一页。我需要这个然后断言我创建的元素是显示的,因为元素总是在最后一页上。 它运行得很好但我的问题是,当我的测试达到这一点时,运行此语句需要大约20秒,因为我在所有测试中使用它会大大减慢我的测试过程。 对于我描述的案例,是否有更快捷的方法?

public void jumpToLastPage(){ 
    List<WebElement> lastPage = driver.findElements(locator for last page button));
    if (lastPage.size() == 0){
        List<WebElement> nextPage = driver.findElements(locator for next page button));
        if(nextPage.size() >= 1){
            nextPage.get(0).click();
        }
    }
    else lastPage.get(0).click();
}

2 个答案:

答案 0 :(得分:0)

经过多次尝试,我发现问题实际上来自我在@BeforeMethod(TestNG)中的设置。

我的超时设置为10秒: driver.manage()。timeouts()。implicitlyWait(10,TimeUnit.SECONDS);

当它试图找到该元素并失败时,它仍然徘徊10秒钟以期找到它,这就是为什么我花了20秒钟才完成声明。我在一个页面上,没有显示任何元素。

我刚刚添加了两行代码来解决这个问题:

public void jumpToLastPage(){
    driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
    List<WebElement> lastPage = driver.findElements(By.xpath(locator));
    if (lastPage.size() == 0){
        List<WebElement> nextPage = driver.findElements(By.xpath(locator));
        if(nextPage.size() >= 1){
            nextPage.get(0).click();
        }
    }
    else lastPage.get(0).click();
    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
}

这样,它设置了在执行语句时等待3秒的隐式时间,然后一旦完成则返回默认的10秒,大大减少了完成语句所需的时间。

尽管如此,谢谢大家的答案。

答案 1 :(得分:-1)

我认为这会更快:

public void jumpToLastPage(){
    List<WebElement> lastPageButton = driver.findElements(By locator);
    List<WebElement> nextPageButton = driver.findElements(By locator);

    // if last page button is on the page, click it
    if(lastPageButton.size() != 0) {
        lastPageButton.get(0).click();
    }
    // else if next page button, click it
    else if(nextPageButton.size() != 0) {
        nextPageButton.get(0).click();
    }
    // otherwise you should be on the only page
}
相关问题