modules/browser_object_context_menu.py (21 lines of code) (raw):
import logging
from typing import Union
from selenium.webdriver.remote.webelement import WebElement
from modules.page_base import BasePage
class ContextMenu(BasePage):
"""
Browser Object Model (base class/parent class) for the context menus upon right clicking
"""
URL_TEMPLATE = ""
def click_context_item(
self, reference: Union[str, tuple, WebElement], labels=[]
) -> BasePage:
"""
Clicks the context item.
"""
with self.driver.context(self.driver.CONTEXT_CHROME):
self.fetch(reference, labels=labels).click()
return self
class AboutDownloadsContextMenu(ContextMenu):
"""
Browser object model for the context menu for right clicking a download in About:Downloads
"""
def has_all_options_available(self) -> ContextMenu:
"""Timeout unless all items labeled downloadOption are present, else return self"""
with self.driver.context(self.context_id):
for elname in [
k for k, v in self.elements.items() if "downloadOption" in v["groups"]
]:
logging.info(f"elname {elname}")
self.element_exists(elname)
return self