Skip to content

Commit

Permalink
making Browser.cookies.all() behave the same in all drivers, consiste…
Browse files Browse the repository at this point in the history
…nt with Browser.cookies.add() and added docs about it (closes #295)
  • Loading branch information
douglascamata committed Feb 7, 2014
1 parent a81a5dd commit 4c45739
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 6 deletions.
1 change: 1 addition & 0 deletions docs/cookies.rst
Expand Up @@ -23,6 +23,7 @@ For add a cookie use the add method:

browser.cookies.add({'whatever': 'and ever'})


Retrieve all cookies
--------------------

Expand Down
4 changes: 3 additions & 1 deletion splinter/cookie_manager.py
Expand Up @@ -52,10 +52,12 @@ def delete(self, *cookies):
"""
raise NotImplementedError

def all(self):
def all(self, info=False):
"""
Returns all of the cookies.
**Note:** If you're using any webdriver and want more info about the cookie, set the `info` parameter to `True` (in other drivers, it won't make any difference). In this case, this method will return a list of dicts, each with one cookie's info.
Examples:
>>> cookie_manager.add({'name': 'Tony'})
Expand Down
8 changes: 6 additions & 2 deletions splinter/driver/djangoclient.py
Expand Up @@ -37,8 +37,12 @@ def delete(self, *cookies):
else:
self._cookies.clear()

def all(self):
return self._cookies.items()
def all(self, info=False):
cookies = []
for key, value in self._cookies.items():
item = {key: value}
cookies.append(item)
return cookies

def __getitem__(self, item):
return self._cookies[item].value
Expand Down
12 changes: 11 additions & 1 deletion splinter/driver/webdriver/cookie_manager.py
Expand Up @@ -4,6 +4,7 @@
# Use of this source code is governed by a BSD-style
# license that can be found in the LICENSE file.

from urlparse import urlparse
from splinter.cookie_manager import CookieManagerAPI


Expand All @@ -23,7 +24,16 @@ def delete(self, *cookies):
else:
self.driver.delete_all_cookies()

def all(self):
def all(self, info=False):
if not info:
cleaned_cookies = []
cookies = self.driver.get_cookies()
for cookie in cookies:
cookie_domain = cookie['domain'] if not cookie['domain'].startswith('.') else cookie['domain'][1:]
if cookie_domain in urlparse(self.driver.current_url).netloc:
cookie = {cookie['name']: cookie['value']}
cleaned_cookies.append(cookie)
return cleaned_cookies
return self.driver.get_cookies()

def __getitem__(self, item):
Expand Down
8 changes: 6 additions & 2 deletions splinter/driver/zopetestbrowser.py
Expand Up @@ -38,8 +38,12 @@ def delete(self, *cookies):
else:
self._cookies.clearAll()

def all(self):
return self._cookies.items()
def all(self, info=False):
cookies = []
for key, value in self._cookies.items():
item = {key: value}
cookies.append(item)
return cookies

def __getitem__(self, item):
return self._cookies[item]
Expand Down

0 comments on commit 4c45739

Please sign in to comment.