Обход таблицы и переход по ссылкам внутри с использованием Selenium

Я пытаюсь пройти по таблице, используя Selenium в Java (в настоящее время использую chromedriver). Содержимое таблицы состоит из разных людей со ссылками на их профили, для каждого человека в этой таблице я захожу в их профиль и извлекаю некоторую информацию. Я сделаю это для X человек. Таблица содержит 5 человек на странице, и я перемещаюсь по страницам, нажимая кнопку разбивки на страницы «>». См. https://www.seleniumeasy.com/test/table-pagination-demo.html, чтобы узнать, как выглядит структура таблицы.

Теперь к вопросу: Итак, в качестве примера я сейчас нахожусь в exampleUrl.com/page_contain_table. Затем я ввожу профиль пользователя и извлекаю его информацию, их URL-адрес выглядит примерно как exampleUrl.com/user_x. Затем я использую

driver.navigate().back();

вернуться на страницу таблицы (exampleUrl.com/page_contain_table).

Проблема в том, что когда я просматриваю таблицу, URL-адрес не меняется. Поэтому всякий раз, когда я возвращаюсь от exampleUrl.com/user_x к exampleUrl.com/page_contain_table, я всегда оказываюсь на первой странице таблицы.

Это отлично работает, когда мне нужно получить информацию о пользователе только с первой страницы в таблице, но что, если мне нужно просмотреть 25 страниц? Если я нахожусь на странице 11, то я смогу получить информацию об одном пользователе на странице 11, а затем я вернусь на страницу 1, и тогда мне придется снова перейти на страницу 11, чтобы иметь возможность извлечь еще одну. информация о пользователе.

Что я пробовал:

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

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

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

Заранее спасибо :)

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я могу придумать несколько способов сделать это:

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

  2. Другая возможность состоит в том, что URL-адрес содержит страницу таблицы, в которой вы находитесь. Например, если вы находитесь на странице 5 таблицы, URL-адрес будет содержать что-то вроде ?page=5. Я предполагаю, что это не так, потому что кнопка «Назад» полностью повторяется.

  3. Другой вариант может заключаться в том, что на странице есть счетчик страниц, например что-то вроде <1 2 3 4 5> (где 3 выделено жирным шрифтом или не отформатировано и т. д.), которое указывает, на какой странице вы находитесь. Прежде чем покинуть страницу, вы можете получить эту информацию, а затем вернуться к таблице и щелкнуть ссылку, связанную с этой конкретной страницей.

Не видя сайт / страницу, я не могу с уверенностью сказать, что №2 или №3 являются жизнеспособными вариантами. Это предположения, основанные на том, что я видел на других сайтах.

Спасибо! Это сработало отлично, не знаю, почему я вообще не подумал об этом ... В итоге я сделал это с вариантом №1. Вариант №2 не будет работать, потому что URL-адрес не содержит страницу таблицы, и, как вы упомянули, кнопка «Назад» приводит к тому, что все начинается заново. Вариант №3 также не будет работать, потому что кнопки разбивки на страницы просто «<» и «>».

Fjodor 11.12.2018 11:25

Другие вопросы по теме