Пройдя по таблице и щелкнув по ссылкам при использовании Selenium - PullRequest
0 голосов
/ 10 декабря 2018

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

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

driver.navigate().back();

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

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

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

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

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

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

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

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

1 Ответ

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

Есть несколько способов сделать это:

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

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

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

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

...