Skip to content

Locatorutils

locatorutils

module providing Selenium locator tools

SeleniumLocator

SeleniumLocator - locator as namedtuple (dataclass leads to error as unpack operator will not work)

by: Union[By, str] instance-attribute

value: str instance-attribute

parameterizedSeleniumLocator(by: By, value: str)

parameterizedSeleniumLocator - parameterized SeleniumLocator class

Source code in src/utils_seleniumxp/locatorutils.py
def __init__(self, by: By, value: str):
    self._by = by
    self._value = value
    parameterlist = re.findall(r'{\w+}', value)
    if parameterlist:
        self._parameters = [re.sub(r'[{}]', '', param) for param in parameterlist]
    else:
        self._parameters = []

by: By property

is_parameterized: bool property

parameters: list[str] property

value: str property

replace_parameters(**kwargs) -> SeleniumLocator

Source code in src/utils_seleniumxp/locatorutils.py
def replace_parameters(self, **kwargs) -> SeleniumLocator:
    if self.is_parameterized:
        if len(kwargs) == 0:
            err_msg = f'Missing keyword arguments: {self._parameters}'
            raise ValueError(err_msg)
        for param in self._parameters:
            if param not in kwargs:
                err_msg = f'Missing keyword argument: {param}'
                raise ValueError(err_msg)
        return SeleniumLocator(self._by, self._value.format(**kwargs))
    else:
        return SeleniumLocator(self._by, self._value)

parselSelectorExtension

parselSelectorExtension - parsel selector wrapping extension to unify calling for the selector types CSS and XPATH

css_or_xpath(locator: SeleniumLocator)

Source code in src/utils_seleniumxp/locatorutils.py
def css_or_xpath(self, locator: SeleniumLocator):
    if locator.by == By.XPATH:
        return self.xpath(locator.value)
    elif locator.by == By.CSS_SELECTOR:
        return self.css(locator.value)
    else:
        ErrorUtilsSelenium("Only XPATH and CSS selectors allowed for parsel wrapper.")

SeleniumLocatorCSS(value: str)

SeleniumLocatorCSS - factory function for CSS-type SeleniumLocator class object

Source code in src/utils_seleniumxp/locatorutils.py
def SeleniumLocatorCSS(value: str):
    """
    SeleniumLocatorCSS - factory function for CSS-type SeleniumLocator class object
    """
    return SeleniumLocator(By.CSS_SELECTOR, value)

SeleniumLocatorXPATH(value: str)

SeleniumLocatorXPATH - factory function for XPATH-type SeleniumLocator class object

Source code in src/utils_seleniumxp/locatorutils.py
def SeleniumLocatorXPATH(value: str):
    """
    SeleniumLocatorXPATH - factory function for XPATH-type SeleniumLocator class object
    """
    return SeleniumLocator(By.XPATH, value)

check_locator(locator: SeleniumLocator, loctypes: Union[list[str], set[str]] = {By.XPATH, By.CSS_SELECTOR}) -> bool

check_locator - check locator if of type in typelist

Parameters:

Name Type Description Default
locator SeleniumLocator

SeleniumLocator object

required
loctypes Union[list[str], set[str]

list of locator types. Defaults to [By.XPATH, By.CSS_SELECTOR].

{XPATH, CSS_SELECTOR}

Returns:

Name Type Description
bool bool

check result

Source code in src/utils_seleniumxp/locatorutils.py
def check_locator(
    locator: SeleniumLocator,
    loctypes: Union[list[str], set[str]] = {By.XPATH, By.CSS_SELECTOR}
) -> bool:
    """
    check_locator - check locator if of type in typelist

    Args:
        locator (SeleniumLocator): SeleniumLocator object
        loctypes (Union[list[str], set[str], optional): list of locator types. Defaults to [By.XPATH, By.CSS_SELECTOR].

    Returns:
        bool: check result
    """
    return check_locatorlist([locator], loctypes)

check_locatorlist(loclist: list[SeleniumLocator], loctypes: Union[list[str], set[str]] = {By.XPATH, By.CSS_SELECTOR}) -> bool

check_locatorlist - check locator list if of type in typelist

Parameters:

Name Type Description Default
loclist list[SeleniumLocator]

list of SeleniumLocator objects

required
loctypes Union[list[str], set[str]

list of locator types. Defaults to [By.XPATH, By.CSS_SELECTOR].

{XPATH, CSS_SELECTOR}

Returns:

Name Type Description
bool bool

check result

Source code in src/utils_seleniumxp/locatorutils.py
def check_locatorlist(
    loclist: list[SeleniumLocator],
    loctypes: Union[list[str], set[str]] = {By.XPATH, By.CSS_SELECTOR}
) -> bool:
    """
    check_locatorlist - check locator list if of type in typelist

    Args:
        loclist(list[SeleniumLocator]): list of SeleniumLocator objects
        loctypes (Union[list[str], set[str], optional): list of locator types. Defaults to [By.XPATH, By.CSS_SELECTOR].

    Returns:
        bool: check result
    """

    check = True
    for locator in loclist:
        if locator is not None:
            check = check and (locator.by in loctypes)
    return check