Skip to content

Commit 8108892

Browse files
committed
Merge main into this branch to resolve conflicts
1 parent a480790 commit 8108892

File tree

3 files changed

+114
-0
lines changed

3 files changed

+114
-0
lines changed

modules/data/about_prefs.components.json

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -323,6 +323,15 @@
323323
]
324324
},
325325

326+
"manage-data-save-changes-button": {
327+
"selectorData": "[class='button-text'][value='Save Changes']",
328+
"strategy": "css",
329+
"shadowParent": "cookies-shadow-root",
330+
"groups": [
331+
"doNotCache"
332+
]
333+
},
334+
326335
"permissions-notifications-button": {
327336
"selectorData": "notificationSettingsButton",
328337
"strategy": "id",
@@ -395,6 +404,24 @@
395404
"groups": []
396405
},
397406

407+
"manage-cookies-site": {
408+
"selectorData": "richlistitem[host='{name}']",
409+
"strategy": "css",
410+
"groups": []
411+
},
412+
413+
"remove-selected-button": {
414+
"selectorData": "removeSelected",
415+
"strategy": "id",
416+
"groups": []
417+
},
418+
419+
"remove-all-button": {
420+
"selectorData": "removeAll",
421+
"strategy": "id",
422+
"groups": []
423+
},
424+
398425
"history_menulist": {
399426
"selectorData": "historyMode",
400427
"strategy": "id",

modules/page_object_about_prefs.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,13 @@ def get_clear_cookie_data_value(self) -> int:
317317
else:
318318
print("No number found in the string")
319319

320+
def get_manage_data_site_element(self, site: str) -> WebElement:
321+
"""
322+
Returns the WebElement for the given site in the manage site data popup
323+
"""
324+
element = self.get_element("manage-cookies-site", labels=[site])
325+
return element
326+
320327
def get_iframe(self) -> WebElement:
321328
"""
322329
Gets the webelement for the iframe that commonly appears in about:preferences
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
from selenium.webdriver import Firefox
2+
3+
from modules.page_object import AboutPrefs
4+
from modules.util import BrowserActions
5+
from pynput.keyboard import Controller, Key
6+
from time import sleep
7+
8+
COOKIE_SITE = "google.com"
9+
10+
11+
def test_manage_cookie_data(driver: Firefox):
12+
"""
13+
C143633 - Cookies and Site Data can be managed
14+
via the "Managed Cookies and Site Data" pane
15+
"""
16+
# Instantiate objects
17+
about_prefs = AboutPrefs(driver, category="privacy")
18+
ba = BrowserActions(driver)
19+
keyboard = Controller()
20+
21+
def open_manage_cookies_data_dialog():
22+
about_prefs.open()
23+
manage_data_popup = about_prefs.press_button_get_popup_dialog_iframe(
24+
"Manage Data…"
25+
)
26+
ba.switch_to_iframe_context(manage_data_popup)
27+
28+
# Visit some sites to get a few cookies added to saved data
29+
driver.get("https://www.google.com")
30+
driver.get("https://www.jetbrains.com")
31+
driver.get("https://www.wikipedia.com")
32+
33+
# Navigate to the manage data dialog of about:preferences#privacy
34+
open_manage_cookies_data_dialog()
35+
36+
# Click on one of the items from the list.
37+
cookie_item = about_prefs.get_manage_data_site_element(COOKIE_SITE)
38+
cookie_item.click()
39+
40+
# The clicked on site in the list is highlighted
41+
selected = cookie_item.get_attribute("selected")
42+
assert selected == "true"
43+
44+
# Click the "Remove Selected" button.
45+
about_prefs.get_element("remove-selected-button").click()
46+
47+
# The selected item is removed from the list.
48+
about_prefs.element_does_not_exist("manage-cookies-site", labels=[COOKIE_SITE])
49+
50+
# Click on the "Remove All" button and wait for changes to take.
51+
about_prefs.get_element("remove-all-button").click()
52+
sleep(1)
53+
54+
# All the sites are removed from the list.
55+
# NOTE: There seems to be an empty placeholder element, thus 1 item is always there.
56+
cookie_list = about_prefs.get_elements("cookies-manage-data-sitelist")
57+
assert len(cookie_list) == 1
58+
59+
# Click on "Save Changes" button and wait for changes to take.
60+
about_prefs.get_element("manage-data-save-changes-button").click()
61+
sleep(1)
62+
63+
# Using pynput, navigate to the "Remove" button of the acceptance dialog/alert,
64+
# then send the Enter key and wait for changes to take
65+
keyboard.press(Key.tab)
66+
keyboard.release(Key.tab)
67+
sleep(0.5)
68+
keyboard.press(Key.tab)
69+
keyboard.release(Key.tab)
70+
sleep(0.5)
71+
keyboard.press(Key.enter)
72+
keyboard.release(Key.enter)
73+
sleep(1)
74+
75+
# Navigate back to the manage data dialog of about:preferences#privacy
76+
open_manage_cookies_data_dialog()
77+
78+
# All the cookies and site data are deleted.
79+
cookie_list_post_remove = about_prefs.get_elements("cookies-manage-data-sitelist")
80+
assert len(cookie_list_post_remove) == 1 # NOTE: always an empty item here

0 commit comments

Comments
 (0)