Я пытаюсь пройти по таблице, используя 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, чтобы иметь возможность извлечь еще одну. информация о пользователе.
Что я пробовал:
Я попытался просто разбить на страницы все страницы, чтобы получить ссылки всех пользователей, чтобы затем щелкнуть их, но затем я, очевидно, получил StaleElementReferenceException, потому что эта ссылка в настоящее время не отображается на странице.
Я также подумал, что, возможно, есть способ реплицировать драйвер всякий раз, когда я разбиваю таблицу на страницы, а затем переключаюсь на этот конкретный драйвер, но это тоже не удалось.
Через Google мне не удалось найти никаких других вопросов по этому поводу, поэтому я немного растерялся. Есть ли способ как-то сохранить состояние, чтобы мне не приходилось каждый раз возвращаться на первую страницу?
Заранее спасибо :)




Я могу придумать несколько способов сделать это:
Сначала очистите всю таблицу, собирая URL-адреса для каждой страницы профиля пользователя и сохраняя их в массиве. После того, как вы закончите очистку всей таблицы, прокрутите массив и перейдите к каждому URL-адресу и очистите оттуда все, что вам нужно. Я считаю, что это лучший и самый быстрый выбор.
Другая возможность состоит в том, что URL-адрес содержит страницу таблицы, в которой вы находитесь. Например, если вы находитесь на странице 5 таблицы, URL-адрес будет содержать что-то вроде ?page=5. Я предполагаю, что это не так, потому что кнопка «Назад» полностью повторяется.
Другой вариант может заключаться в том, что на странице есть счетчик страниц, например что-то вроде <1 2 3 4 5> (где 3 выделено жирным шрифтом или не отформатировано и т. д.), которое указывает, на какой странице вы находитесь. Прежде чем покинуть страницу, вы можете получить эту информацию, а затем вернуться к таблице и щелкнуть ссылку, связанную с этой конкретной страницей.
Не видя сайт / страницу, я не могу с уверенностью сказать, что №2 или №3 являются жизнеспособными вариантами. Это предположения, основанные на том, что я видел на других сайтах.
Спасибо! Это сработало отлично, не знаю, почему я вообще не подумал об этом ... В итоге я сделал это с вариантом №1. Вариант №2 не будет работать, потому что URL-адрес не содержит страницу таблицы, и, как вы упомянули, кнопка «Назад» приводит к тому, что все начинается заново. Вариант №3 также не будет работать, потому что кнопки разбивки на страницы просто «<» и «>».