Добавление файлов cookie, работающих с веб-браузером Firefox, но не в PhantomJS

У меня есть рассол с куки, которые я создаю с помощью следующей команды

def doLogin(driver): #do login stuff pickle.dump(driver.get_cookies(), open("cookies.pkl", "wb")) 

У меня есть пример кода для получения файлов cookie.

 driver = webdriver.PhantomJS() self.doLogin(driver) driver.delete_all_cookies() for cookie in pickle.load(open("cookies.pkl", "rb")): driver.add_cookie(cookie) 

Я вижу, что он хорошо создает файл cookie, потому что, если я его print это нормально, что add_cookie () делает теневые вещи

Это дает следующее исключение

WebDriverException: Сообщение: {«errorMessage»: «Невозможно установить Cookie», «request»: {«headers»: {«Accept»: «application / json», «Accept-Encoding»: «identity», «Connection»: "закрыть", "Content-Length": "219", "Content-Type": "приложения / JSON; кодировка = UTF-8", "хост": "127.0.0.1:50738","User-Agent": «Python-urllib / 2.7»}, «httpVersion»: «1.1», «method»: «POST», «post»: «{\" sessionId \ ": \" 391db430-154a-11e6-8a0a-ef59204729f5 \ " , \ "cookie \": {\ "domain \": \ "secretWebsite \", \ "name \": \ "JSESSIONID \", \ "значение \": \ "8332B6099FA3BBBC82893D4C7E6E918B \", \ "путь \": \ "Также секрет \", \ "httponly \": false, \ "secure \": true}} "," url ":" / cookie "," urlParsed ": {" anchor ":" "," query ":"», "файл": "печенье", "каталог": "/", "путь": "/ печенье", "относительное": "/ печенье", "порт": "", "хозяин": "", "пароль": "", "пользователь": "", "USERINFO": "", "власть": "", "протокол": "", "источник": "/ печенье", "queryKey" : {}, "chunks": ["cookie"]}, "urlOriginal": "/ session / 391db430-154a-11e6-8a0a-ef59204729f5 / cookie"}} Скриншот: доступен через экран

Чтобы работать, мне нужно только изменить webdriver в Firefox

Является ли это известной проблемой PhantomJS?

Кажется, что некоторые клавиши / значения не поддерживаются драйвером PhantomJS. Чтобы преодолеть эту проблему, я бы добавил самые важные из них: execute_script :

 def save_cookies(driver, file_path): LINE = "document.cookie = '{name}={value}; path={path}; domain={domain}; expires={expires}';\n" with open(file_path, 'w') as file : for cookie in driver.get_cookies() : file.write(LINE.format(**cookie)) def load_cookies(driver, file_path): with open(file_path, 'r') as file: driver.execute_script(file.read()) from selenium import webdriver driver = webdriver.PhantomJS() # load the domain driver.get("https://stackoverflow.com/users/login") # save the cookies to a file save_cookies(driver, r"cookies.js") # delete all the cookies driver.delete_all_cookies() # load the cookies from the file load_cookies(driver, r"cookies.js")