Добрый день! Только начинаю разбираться с selenium'om из возник вопрос: как при работе с Chrome оставаться авторизованым на каком-то сайте? Гугл привел меня на эту ссылку: http://stackoverflow....nium-webdriver Решил зайти, авторизоваться, сделать дамп этой куки и впоследствии загружать куку из дампа. Написал такой скрипт для авторизации на ya.ru:
import pickle
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome("C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe")#инициализирую вебдрайвер
driver.get("https://ya.ru/")
#вхход в почту
elem = driver.find_element_by_xpath("/html/body/table/tbody/tr[1]/td/div[2]/a")
elem.click()
#ищу поля логин-пароль
elem = driver.find_element_by_xpath('''//*[@id="nb-1"]/span/input''')
elem.send_keys("туточки логин")
elem = driver.find_element_by_xpath('''//*[@id="nb-2"]/span/input''')
elem.send_keys("туточки пароль")
#кнопка авторизации
elem = driver.find_element_by_xpath('''//*[@id="js"]/body/div[1]/div[1]/div[1]/form/div[4]/span/button''')
elem.click()
#cookies dump
pickle.dump(driver.get_cookies(), open("cookies.pkl","wb"))
#закрываю браузер - куки в браузере не сохраняются
driver.close()
#открываю браузер заново
driver = webdriver.Chrome("C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe")
#загружаю куки из дампа
cookies = pickle.load(open("cookies.pkl","rb"))
print(cookies) #смотрю что я загрузил из дампа
driver.delete_all_cookies()#выпилю старые прежде чем загрузить новые
for cookie in cookies:
driver.add_cookie(cookie)
#открываю страничку для которой делал дамп куки
driver.get("https://ya.ru/")
на строке
driver.add_cookie(cookie)
Получаю ошибку, вот вывод на консоль, включая вывод принта куки:
Скрытый текст
[ { 'path' :
'/' , 'name' :
'sessionid2' , 'httpOnly' :
True , 'expiry' :
2147483645.330977 , 'secure' :
True , 'domain' :
'.yandex.ua' , 'value' :
'3:1470815140.5.0.1470815140000:3Kc5JQ:51.1|409677877.0.2|4:116873.561329.8iR9P3HktRQ5kkTbzODuYAP2QY0' } , { 'path' :
'/' , 'name' :
'L' , 'httpOnly' :
False , 'expiry' :
1786434338.329975 , 'secure' :
False , 'domain' :
'.yandex.ua' , 'value' :
'AVNJUUJYfVxeX3FTWGBtZwUABVdFX1hAARMCEnkJFmsgLh0QS2BeRQ==.1470815140.12577.36627.483c1be92920e00ebfecf6c94e4dd006' } , { 'path' :
'/' , 'name' :
'ni' , 'httpOnly' :
False , 'expiry' :
1478763936.208975 , 'secure' :
False , 'domain' :
'mail.yandex.ua' , 'value' :
'1' } , { 'value' :
'udn.cDp0ZXN0LnlhLXRlc3QyMDE3' , 'name' :
'ys' , 'httpOnly' :
False , 'path' :
'/' , 'secure' :
False , 'domain' :
'.yandex.ua' } , { 'path' :
'/' , 'name' :
'Session_id' , 'httpOnly' :
True , 'expiry' :
2147483645.329976 , 'secure' :
False , 'domain' :
'.yandex.ua' , 'value' :
'3:1470815140.5.0.1470815140000:3Kc5JQ:51.0|409677877.0.2|4:116873.668027.7Fx7qsHBaV8qSSc9GByFMl9HYVs' } , { 'path' :
'/' , 'name' :
'_ym_uid' , 'httpOnly' :
False , 'expiry' :
1533023136 , 'secure' :
False , 'domain' :
'.yandex.ua' , 'value' :
'14708151371009373363' } , { 'path' :
'/' , 'name' :
'_ym_isad' , 'httpOnly' :
False , 'expiry' :
1470887136 , 'secure' :
False , 'domain' :
'.yandex.ua' , 'value' :
'2' } , { 'path' :
'/' , 'name' :
'yandexuid' , 'httpOnly' :
False , 'expiry' :
1786434338.330982 , 'secure' :
False , 'domain' :
'.yandex.ua' , 'value' :
'4053422991470815136' } , { 'path' :
'/' , 'name' :
'yandex_login' , 'httpOnly' :
False , 'expiry' :
1786434338.330979 , 'secure' :
False , 'domain' :
'.yandex.ua' , 'value' :
'test.ya-test2017' } , { 'path' :
'/' , 'name' :
'yp' , 'httpOnly' :
False , 'expiry' :
1786434338.330983 , 'secure' :
False , 'domain' :
'.yandex.ua' , 'value' :
'1786175136.yrts.1470815136#1786175140.udn.cDp0ZXN0LnlhLXRlc3QyMDE3' } , { 'path' :
'/' , 'name' :
'stngs' , 'httpOnly' :
False , 'expiry' :
1786347938.635979 , 'secure' :
True , 'domain' :
'mail.yandex.ua' , 'value' :
'colorful::on:' } ]
Traceback ( most recent call last) :
File "C:\U sers\C ach\D esktop\A uto test\y a.ru mail\t est.py" , line 29 , in < module>
driver.add_cookie ( cookie)
File "C:\U sers\C ach\A ppData\L ocal\P rograms\P ython\P ython35-32\l ib\s ite-packages\s elenium\w ebdriver\r emote\w ebdriver.py" , line 671 , in add_cookie
self .execute ( Command.ADD_COOKIE , { 'cookie' : cookie_dict} )
File "C:\U sers\C ach\A ppData\L ocal\P rograms\P ython\P ython35-32\l ib\s ite-packages\s elenium\w ebdriver\r emote\w ebdriver.py" , line 236 , in execute
self .error_handler .check_response ( response)
File "C:\U sers\C ach\A ppData\L ocal\P rograms\P ython\P ython35-32\l ib\s ite-packages\s elenium\w ebdriver\r emote\e rrorhandler.py" , line 192 , in check_response
raise exception_class( message, screen, stacktrace)
selenium.common .exceptions .WebDriverException : Message: < unknown> : Failed to set the 'cookie' property on 'Document' : Cookies are disabled inside 'data:' URLs.
( Session info: chrome= 52.0.2743.116)
( Driver info: chromedriver= 2.23.409699 ( 49b0fa931cda1caad0ae15b7d1b68004acd05129) , platform = Windows NT 10.0.10240 x86_64)
Как мне это исправить? Гугл ответа, увы, не дал. Заранее спасибо.