java selenium - перейдите к номеру страницы, который не отображается в разбивке на страницы - PullRequest
0 голосов
/ 13 декабря 2018

Фон

У меня есть сценарий Selenium в Java, который выполняет поиск, и результат находится в разбитой на страницы таблице.Таблица навигации внизу:

[‹‹ Первая] [‹Предыдущая] [1] [2] [3] [4] [5] [Следующая›] [Последняя ››]

В некоторых случаях мой поиск возвращает 100 тысяч записей, что дает мне 10 тысяч страниц.

Проблема

Моя проблема в том, что когда я запускаю скрипт, он останавливается или падает в середине по какой-либо причине.В следующий раз, когда я запускаю скрипт, он должен пройти по всем страницам, которые я ранее искал, чтобы вернуться туда, где он остановился.Таким образом, мой сценарий будет смотреть на строку «X» и видеть, просматривал ли я эту запись, пропустить ее, если я зарегистрировался в предыдущем запуске, или сделать то, что нужно, если я не проверил ее.После того, как все строки номера страницы «Y» заполнены, перейдите на следующую страницу.Это занимает слишком много времени, когда мне нужно вернуться на страницу с большим числом.

URL не содержит никакой информации о странице и не изменяется.Остается на .... resultTable.html.

На странице нет поля ввода «Перейти к странице: []» для перехода на страницу.И мы не можем добавить его.

Решение?

Я думал, есть ли способ, которым я могу просто перейти на запрошенную страницу, может быть, с помощью JavaScript?Потому что панель навигации таблицы не позволяет переходить на страницу.Я выполнял свой поиск, и на странице 1 я проверял, на какую страницу попадал мой последний прогон, и переходил на эту страницу.Таким образом, мой сценарий не должен проходить каждую страницу 1 на 1, проверяя каждую строку, если это запись, которую я уже проверял .... (Я технически слаб в этой области, нужна ваша помощь ?)

Это код onClick = "" в таблице nav:

<a href="#" 
   onclick="mojarra.jsfcljs(
      document.getElementById('idHere'), 
      {'j_idt##:#:j_idt##':'j_idt##:#:j_idt##', 
      'pageIndex':'',
      'moveToPageNum':'##'},
      '');return false"
>##</a>

Интересно, могу ли я просто отправить код javaScript с нужной мне страницей в разделе 'moveToPageNum':'##'?

В моем сценарии в какой-то момент я использую JavascriptExecutor для выполнения задачи, может быть, я могу использовать ее для целей, описанных выше?Пример того, как я использую его в другом месте в моем скрипте:

public static void openNewTab(WebDriver driver, String url) { 
   ((JavascriptExecutor) driver).executeScript("window.open('" + url + " ','_blank');");
   changeTab(driver, url);
}

1 Ответ

0 голосов
/ 13 декабря 2018

Ну, после большого редактирования моего вопроса, и я уверен, что люди открывают вопрос и говорят: «Я должен прочитать все это ...».Я получил это, извините ?.

Я сделал метод, который выполняет сценарий Java:

public static void goToPage(WebDriver driver, int page) {

    ((JavascriptExecutor) driver)
            .executeScript("mojarra.jsfcljs(document.getElementById('idHere'),"
                           + "{'j_idt##:#:j_idt##':'j_idt##:#:j_idt##','pageIndex':'',"
                           + "'moveToPageNum':'" + page + "'}," + "'');return false");
}
...