Страница переходит на последнюю страницу и остается на последней странице, не прерывая цикл, используя selenium java

#java #selenium #selenium-webdriver #while-loop #pagination

#java #селен #selenium-webdriver #while-цикл #разбивка на страницы

Вопрос:

Я могу разбивать страницы на страницы до последней страницы, но она продолжает оставаться на последней странице

Кнопка «Далее» на последней странице включена и доступна для нажатия. Когда счетчик достигает общего количества страниц, цикл должен завершиться

По какой-то причине он продолжает оставаться на последней странице, и я попробовал несколько разных методов, чтобы поймать ошибку. Он не завершается, когда страница достигает последней страницы. Следующая кнопка видна и присутствует на странице.

int m = 1;

 while (true) {
    WebElement source_next = driver.findElement(By.xpath("//button[@id='nxt']"));
    WebDriverWait s = new WebDriverWait(driver, 25000);
    s.until(ExpectedConditions.elementToBeClickable(source_next));
    action.moveToElement(source_next).perform();
    Thread.sleep(5000);

    ((JavascriptExecutor) driver).executeScript("arguments[0].click();", source_next);
    Thread.sleep(1000);

    WebElement modalcontent = driver.findElement(By.xpath("//div[@class='modal-content']"));
    WebElement ignore_yes = driver.findElement(By.xpath("//button[@id='modal-btn-si']"));
    if ((modalcontent != null) amp;amp; (modalcontent.isDisplayed())) {
            ((JavascriptExecutor) driver).executeScript("arguments[0].click();", ignore_yes);
    }
    driver.manage().timeouts().pageLoadTimeout(TestUtil.PageLoadTimeOut, TimeUnit.SECONDS);
    
    m = m   1;
    System.out.println(m);
    if (m == pgcount) {
        break;
    }
}
  

Ответ №1:

Разве ваши последние строки не должны быть

 System.out.println(m);
if(m >= pgcount) //or > ...but don't think so
{
   break;
}
  

Ответ №2:

Помните, что в java первая страница — это страница 0, вторая страница — страница 1 и т.д… Итак, условие в последнем операторе if должно мне:

 m==pgcount-1;