def get_elements(**kwargs): """ Get a set of elements Usage: ret = self.get_elements(css="#el") print(len(ret)) """ web_elem = WebElement(**kwargs) elems = web_elem.get_elements() if len(elems) == 0: log.warn("{}.".format(web_elem.warn)) else: log.info("✅ {}.".format(web_elem.info)) return elems
def assertInUrl(self, url=None, msg=None): """ Asserts whether the current URL is in line with expectations. Usage: self.assertInUrl("url") """ if url is None: raise AssertionError("The assertion URL cannot be empty.") for _ in range(Seldom.timeout): try: self.assertIn(url, self.get_url) log.info("👀 assertIn url: {url}.".format(url=self.get_url)) break except AssertionError: sleep(1) else: log.warn("❌ assertIn fail: {url}.".format(url=url)) self.assertIn(url, self.get_url, msg=msg)
def find_element(elem): """ Find if the element exists. """ for i in range(Seldom.timeout): elems = Seldom.driver.find_elements(by=elem[0], value=elem[1]) if len(elems) == 1: log.info("Find element: {by}={value} ".format(by=elem[0], value=elem[1])) break elif len(elems) > 1: log.warn("Find {n} elements through:{by}={value}".format( n=len(elems), by=elem[0], value=elem[1])) break else: time.sleep(1) else: log.error("Find 0 elements through:{by}={value}".format(by=elem[0], value=elem[1]))
def assertInTitle(self, title=None, msg=None): """ Asserts whether the current title is in line with expectations. Usage: self.assertInTitle("title") """ if title is None: raise AssertionError("The assertion title cannot be empty.") for _ in range(Seldom.timeout): try: self.assertIn(title, Seldom.driver.title) log.info("👀 assertIn title: {title}.".format( title=Seldom.driver.title)) break except AssertionError: sleep(1) else: log.warn("❌ assertIn fail: {title}.".format(title=title)) self.assertIn(title, Seldom.driver.title, msg=msg)
def check_element(self, css=None): """ Check that the element exists Usage: self.check_element(css="#el") """ if css is None: raise NameError("Please enter a CSS selector") log.info("👀 check element.") js = 'return document.querySelectorAll("{css}")'.format(css=css) ret = Seldom.driver.execute_script(js) if len(ret) > 0: for i in range(len(ret)): js = 'return document.querySelectorAll("{css}")[{i}].outerHTML;'.format(css=css, i=i) ret = Seldom.driver.execute_script(js) print("{} ->".format(i), ret) else: log.warn("No elements were found.")
def assertUrl(self, url, msg=None): """ Asserts whether the current URL is in line with expectations. Usage: self.assertUrl("url") """ if url is None: raise AssertionError("The assertion URL cannot be empty.") for _ in range(Seldom.timeout + 1): current_url = unquote(Seldom.driver.current_url) try: self.assertEqual(url, current_url) log.info("👀 assert url: {url}.".format(url=current_url)) break except AssertionError: sleep(1) else: log.warn("❌ assert fail: {url}.".format(url=url)) self.assertEqual(url, Seldom.driver.current_url, msg=msg)