如何使用selenium和python在phantomjs中设置cookie?

时间:2016-06-01 20:41:06

标签: python selenium cookies phantomjs

enter image description here

它引发了一条错误消息,说“只能为当前域设置Cookie”,但我所做的只是将旧cookie放入。有时我添加'正确'域,它会引发错误消息“无法设置曲奇饼”。 我在Firefox中测试过,Firefox也无法工作。

from selenium import webdriver
driver = webdriver.PhantomJS(executable_path=phantompath)
driver.get('http://stackoverflow.com/')
driver.get_screenshot_as_file('1.png')
cookies = driver.get_cookies()
driver.delete_all_cookies()
driver.get_cookies()
for cookie in cookies:
    driver.add_cookie(cookie)

2 个答案:

答案 0 :(得分:6)

PhantomJS驱动程序不支持cookie字典中的所有键。解决此问题的一种方法是选择键:

from selenium import webdriver

driver = webdriver.PhantomJS()
driver.get('http://stackoverflow.com/')

cookies = driver.get_cookies()

driver.delete_all_cookies()

for cookie in cookies :
    driver.add_cookie({k: cookie[k] for k in ('name', 'value', 'domain', 'path', 'expiry')})

答案 1 :(得分:5)

您需要更改每个Cookie的域参数。域字段必须格式如下:

driver = webdriver.PhantomJS()
driver.get('http://www.baidu.com')
driver.delete_all_cookies()

for item in cookie_dictionary: 
    driver.add_cookie({
      'domain': '.baidu.com', # note the dot at the beginning
      'name': item['name'],
      'value': item['value'],
      'path': '/',
      'expires': None
    })

driver.get('http://www.baidu.com')