Skip to content

Commit 757e122

Browse files
committed
handle None and empty string case for get_cookie() and delete_cookie()
1 parent e37334c commit 757e122

File tree

2 files changed

+38
-3
lines changed

2 files changed

+38
-3
lines changed

py/selenium/webdriver/remote/webdriver.py

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -639,26 +639,41 @@ def get_cookies(self) -> List[dict]:
639639
return self.execute(Command.GET_ALL_COOKIES)["value"]
640640

641641
def get_cookie(self, name) -> Optional[Dict]:
642-
"""Get a single cookie by name. Returns the cookie if found, None if
643-
not.
642+
"""Get a single cookie by name. Raises ValueError if the name is empty or whitespace.
643+
Returns the cookie if found, None if not.
644644
645645
:Usage:
646646
::
647647
648648
driver.get_cookie('my_cookie')
649+
650+
:Raises:
651+
ValueError: If the cookie name is empty or whitespace.
649652
"""
653+
if not name or name.isspace():
654+
raise ValueError("Cookie name cannot be empty")
655+
650656
with contextlib.suppress(NoSuchCookieException):
651657
return self.execute(Command.GET_COOKIE, {"name": name})["value"]
658+
652659
return None
653660

654661
def delete_cookie(self, name) -> None:
655-
"""Deletes a single cookie with the given name.
662+
"""Deletes a single cookie with the given name. Raises ValueError if the name is empty or whitespace.
656663
657664
:Usage:
658665
::
659666
660667
driver.delete_cookie('my_cookie')
668+
669+
:Raises:
670+
ValueError: If the cookie name is empty or whitespace.
661671
"""
672+
673+
# firefox deletes all cookies when "" is passed as name
674+
if not name or name.isspace():
675+
raise ValueError("Cookie name cannot be empty")
676+
662677
self.execute(Command.DELETE_COOKIE, {"name": name})
663678

664679
def delete_all_cookies(self) -> None:

py/test/selenium/webdriver/common/cookie_tests.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,3 +152,23 @@ def test_should_not_delete_cookies_with_asimilar_name(cookie, driver, webserver)
152152
cookies = driver.get_cookies()
153153
assert cookie["name"] != cookies[0]["name"]
154154
assert cookie2["name"] == cookies[0]["name"]
155+
156+
157+
def test_get_cookie_raises_value_error_for_empty_name(cookie, driver):
158+
driver.add_cookie(cookie)
159+
with pytest.raises(ValueError, match="Cookie name cannot be empty"):
160+
driver.get_cookie("")
161+
162+
163+
def test_delete_cookie_raises_value_error_for_empty_name(cookie, driver):
164+
cookie2 = cookie.copy()
165+
cookie2["name"] = "{}x".format(cookie["name"])
166+
driver.add_cookie(cookie)
167+
driver.add_cookie(cookie2)
168+
169+
with pytest.raises(ValueError, match="Cookie name cannot be empty"):
170+
driver.delete_cookie("")
171+
172+
cookies = driver.get_cookies()
173+
174+
assert len(cookies) == 2

0 commit comments

Comments
 (0)