|
| 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