Можно ли в selenium(+python) получить код страницы не открытой в данной момент в браузере?
Хотел бы такой сценарий:
-Я авторизовался на тестовом сайте, который довольно таки большой
-Сделал кой-чего...
А теперь вопрос:
После этих действий мне бы хотелось проверить изменения на нескольких страницах сайта. Было круто не открывать эти страницы, а просто на фоне быстренько обежать, забрать код, распарсить найти или не найти изменения не покидая целевой страницы. Типо как реквестсом и бьютифул супом. Мне кажется так будет гораздо быстрее и надёжнее.(часть можно через бд конеш, но все таки интересно найти именно такой способ.)
Как я понял "browser.page_source" работает только на текущей странице.
Может js какой кинуть можно?
Или это вообще бессмысленно?
Ответы (1 шт):
Оч помогли комментарии, но раз никто не отвечает, скину тестовый код не придирайтесь особо, лень редактировать:
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/75.0.3770.142 Safari/537.36 '
} #вроде как это нужно по инструкции, но получается из без этого
def test_tet(browser, main_url):
ttt = BasePage(browser)
ttt.open(main_url)
d = browser.get_cookies()[1] #не знаю почему, но работает только со вторым словарём
s = requests.Session() #создаю сессию
s.cookies.set(domain=d['domain'], name=d['name'], path=d['path'], value=d['value']) #подкидываю куки
email = browser.find_element(By.ID, "Email")
email.send_keys('[email protected]')
password = browser.find_element(By.ID, 'PasswordUser')
password.send_keys('1qaz@WSX')
browser.find_element(By.CSS_SELECTOR, '[type="submit"]').click()
#здесь авторизуюсь
r = s.get(main_url + "/systemparameter", headers=headers)
#теперь можно забирать любую страницу сайта не открывая её в браузере
with open('site.html', 'wb') as f:
f.write(r.text.encode('utf8'))