Товарищи, а подскажите, пожалуйста, как возможно "запомнить" состояние страницы открытой в селениуме, чтобы позде к ней вернуться? Пишу скрипт, который извлекает динамические ссылки на страницы. Должен работать так:
1. Открываем страницу browser.get()
2. Получаю все элементы, что имеют атрибут onclick
3. В цикле кликаю на каждый элемент с onclick
4. Если клик приводит к редиректу, то получаю новый URL с помощью browser.current_url
5. Возвращаюсь на страницу назад browser.execute_script("history.go(-1)")
6. Продолжаю цикл...
Проблема:
После редиректа, изменяется DOM страницы, по этой причине итерации цикла > 0 не могут выполниться, потому что элементов с onclick полученных на этапе 2 уже нет.
Что я пытался сделать:
1. Сохранить версию страницы на диск. Получалось сохранить только через browser.page_source, но если потом загрузить такую страницу обратно в selenium, то редиректы по onclick не работают.
2. Серилизовать объект browser целиком, но не pickle ни dill не справляются. Перечитал всю сеть, но в итоге пришел к отчаянию, что серилизиовать сессию браузера нельзя.
3. Копировать с помощью copy.copy(browser) страницу, чтобы кликать onclick элементы в клоне страницы, а не в оригинале, но в этом случае, найденные с помощью xpath объекты не работаю с клоном.
Условия:
1. Не могу использовать свой прокси, чтобы отслеживать запросы, которые делает браузер
2. Не имею доступа к sitemap сайта с которого нужно собрать данные
3. Не хочу заново получать целиком страницу из п.1 потому что она может быть тяжелой и таких страниц очень много
4. Не могу выполнять функцию из onclick в новом окне/вкладке, потому что там нет всего остального контента страницы и это просто не будет работать
Как мне собрать все динамические ссылки?