# pylint:disable=no-member
from . import exceptions
__all__ = ['FindMixin']
[docs]class FindMixin(object):
[docs] @staticmethod
def clean_elements(elements, criteria, force_list=False, fail=True):
if elements:
return elements if force_list or len(elements) > 1 else elements[0]
if fail:
raise exceptions.NoSuchElementException(criteria)
return None
[docs] def find_css(self, css_selector, prefix=True, force_list=False, fail=True):
assert prefix # Not implemented
elements = self.find_elements_by_css_selector(css_selector)
return self.clean_elements(elements, css_selector, force_list, fail)
[docs] def find_id(self, element_id, prefix=True, force_list=False, fail=True):
return self.find_css(f'#{element_id}', prefix, force_list, fail)
[docs] def find_name(self, element_name, prefix=True, force_list=False, fail=True):
return self.find_css(f'[name={element_name}]', prefix, force_list, fail)
[docs] def find_xpath(self, xpath, force_list=False, fail=True):
return self.clean_elements(self.find_elements_by_xpath(xpath), xpath, force_list, fail)