def add_cookie(self, cookie_dict): """Adds a cookie to your current session. Args: cookie_dict: A dictionary object, with the desired cookie name as the key, and the value being the desired contents. Usage: driver.add_cookie({'foo': 'bar',}) """ self.execute(Command.ADD_COOKIE, {'cookie': cookie_dict})If you're encountering NullPointerExceptions similar to a bug it's possible the problem is that your dictionary needs to include name, value, path, and secure keys. The tests in selenium/webdriver/common/cookies_test.py appear to back this point up:
self.COOKIE_A = {"name": "foo", "value": "bar", "path": "/", "secure": False} def testAddCookie(self): self.driver.execute_script("return document.cookie") self.driver.add_cookie(self.COOKIE_A)
Even the section posted at http://readthedocs.org/docs/selenium-python/en/latest/navigating.html#cookies suggest that adding cookie just a matter of connecting to using a key/value pair too:
Before we leave these next steps, you may be interested in understanding how to use cookies. First of all, you need to be on the domain that the cookie will be valid for: # Go to the correct domain driver.get("http://www.example.com") # Now set the cookie. This one's valid for the entire domain cookie = {"key": "value"}) driver.add_cookie(cookie) # And now output all the available cookies for the current URL all_cookies = driver.get_cookies() for cookie_name, cookie_value in all_cookies.items(): print "%s -> %s", cookie_name, cookie_value
For disabling the Django debug toolbar in Selenium 2, then the command should be:
self.selenium.add_cookie({"name" : "djdt", "value" : "true", "path" : "/", "secure" : False})
As of Selenium v2.5.0, It appears that all name/value and secure must be specified to avoid triggering the NullPointerException error.
An issue report has been filed here:
http://code.google.com/p/selenium/issues/detail?id=2367
This was really useful. This saved me a headache! Thanks
ReplyDeleteLikewise, thanks for this solution!
ReplyDelete