2014-10-21 5 views
0

В веб-приложении, которое я тестирую, у меня есть список элементов, отображаемых на странице. В зависимости от количества элементов в списке список разбивается на страницы.Что было бы более быстрым способом обработки разбивки на страницы?

пагинацию, как это:

  • Если есть одна страница не происходит разбиение на страницы.
  • Если есть две страницы, в нижней части страницы появляется следующая (>) кнопка.
  • Если есть 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(); 
} 
+0

Если вы используете фреймворк, у него должен быть плагин для разбивки на страницы, который вы можете включить или найти в Интернете, как его интегрировать. – unixmiah

+0

Зачем вам нужно перейти на последнюю страницу во всех тестах? –

+0

Если производительность сети медленная, у вас всегда будут некоторые сетевые сбои в работе с расширениями браузера. –

ответ

-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 
} 
+0

Этот метод занимает точно такое же время, что и у меня сейчас. Но спасибо тем не менее :). Тем не менее, поиск ответа. – Vlad

0

После многих попыток я обнаружил, что проблема была на самом деле из моей установки в @BeforeMethod (TestNG).

Мой таймаут был установлен в 10 секунд: driver.manage(). Timeouts(). ImplicitlyWait (10, TimeUnit.SECONDS);

Когда он пытается найти элемент и терпеть неудачу, он все еще задерживается на 10 секунд в надежде найти его, и именно поэтому мне потребовалось 20 секунд, чтобы прочитать заявление. Я был на одной странице, и ни один из элементов не был показан.

Я просто добавил 2 строки кода, чтобы исправить это:

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 секунд один раз это делается значительно уменьшая время, необходимое для прохождения заявления.

Благодарю всех вас за ваши ответы.

Смежные вопросы