def step_impl(context, element_name): element = world.find_element(element_name) if element.wait_for_not_exist(): return True else: log.failed("Verify element '%s' exists?" % element.name, "exists", "not exists")
def step_impl(context, element_name): element = world.find_element(element_name) if element.wait_for_attribute('visible', True): return True else: log.failed("Verify element '%s' visible?" % element.name, "not visible", "visible")
def step_impl(context, element_name): element = world.find_element(element_name) if context.text in element.value: return True else: log.failed("Verify value contains? (multi-line)", element.value, value)
def step_impl(context, element_name): element = world.find_element(element_name) if element.value == context.text: return True else: log.failed("Verify value is? (multi-line)", element.value, context.text)
def step_impl(context, element_name): element = world.find_element(element_name) if element.wait_for_attribute('enabled', False): return True else: log.failed("Verify element '%s' disabled?" % element.name, "enabled", "disabled")
def step_impl(context): alert = world.get_alert_when_exist() if alert is not None: alert.dismiss() else: log.failed("Fail to cancel popup alert")
def step_impl(context): alert = world.get_alert_when_exist() if alert is not None: alert.accept() else: log.failed("Fail to accept popup alert")
def step_impl(context, element_name): element = world.find_element(element_name) if element.value == "": return True else: log.failed("Verify value is empty?", element.value, "<blank>")
def step_impl(context, element_name): element = world.find_element(element_name) if element.wait_for_attribute('selected', False): return True else: log.failed("Verify element '%s' unchecked?" % element.name, "checked", "unchecked")
def step_impl(context, element_name, value): value = world.replace_variables(value) element = world.find_element(element_name) if value in element.value: return True else: log.failed("Verify value contains?", element.value, value)
def step_impl(context, element_name, value): value = world.replace_variables(value) element = world.find_element(element_name) if element.get_attribute('title') == value: return True else: log.failed("Verify tooltip text is?", element.title, value)
def step_impl(context, element_name, value): value = world.replace_variables(value) element = world.find_element(element_name) classes = element.get_attribute('class') if value in classes: return True else: log.failed("Verify class contains?", classes, value)
def step_impl(context, element_name, value): value = world.replace_variables(value) element = world.find_element(element_name) placeholder = element.get_attribute('placeholder') if placeholder == value: return True else: log.failed("Verify placeholder text is?", placeholder, value)
def step_impl(context, value): value = world.replace_variables(value) if not value[:-4].lower() == '.png': value = value + '.png' folder = os.path.dirname(value) if not folder == '': if not os.path.exists(folder): os.makedirs(folder) if not world.save_current_page_screenshot(value): log.failed("Could not save a screenshot.")
def step_impl(context, url): url = world.replace_variables(url) page = Page(url=url) page.driver = world.driver page.wait_for_loading() if url in world.driver.current_url: return True else: log.failed("Verify url contains?", world.driver.current_url, url)
def step_impl(context, element_name, value): value = world.replace_variables(value) element = world.find_element(element_name) styles = element.get_attribute('style') print styles if value in styles: return True else: log.failed("Verify style contains?", styles, value)
def step_impl(context, amount, element_name): element = world.find_element(element_name) if element.count == int(amount): return True else: log.failed( "Verify amount of '%s' is?" % element.name, "amount = %s" % element.count, "amount = %s" % amount )
def step_impl(context, value): value = world.replace_variables(value) alert = world.get_alert_when_exist() if alert is None: log.failed("The popup alert not visible") if alert.text == value: return True else: log.failed("Verify popup message is?", alert.text, value)
def step_impl(context, element_name, value): value = world.replace_variables(value) element = world.find_element(element_name) if element.value |more_than| value: return True else: log.failed( "Verify value is more than?", "value = %s" % element.value, "value > %s" % value )
def step_impl(context, element_name1, element_name2): element1 = world.find_element(element_name1) element2 = world.find_element(element_name2) if element1.value |less_than_or_equal| element2.value: return True else: log.failed( "Verify element1 value is less than or equal to element2 value?", "element1 value = %s , element2 value = %s" % (element1.value, element2.value), "element1 value <= element2 value" )
def step_impl(context, element_name, value): value = world.replace_variables(value) element = world.find_element(element_name) if element.value |less_than_or_equal| value: return True else: log.failed( "Verify value is less than or equal?", "value = %s" % element.value, "value <= %s" % value )
def step_impl(context, element_name1, element_name2): element1 = world.find_element(element_name1) element2 = world.find_element(element_name2) if element1.value |more_than| element2.value: return True else: log.failed( "Verify element1 value is greater than element2 value?", "element1 value = %s , element2 value = %s" % (element1.value, element2.value), "element1 value > element2 value" )
def step_impl(context, element_name, value1, value2): element = world.find_element(element_name) if (element.value |more_than_or_equal| value1) and (element.value |less_than_or_equal| value2): return True elif (element.value |less_than_or_equal| value1) and (element.value |more_than_or_equal| value2): return True else: log.failed( "Verify value is between?", "value = %s" % element.value, "value is between %s and %s" % (value1, value2) )
def load_config(cls, filename, site="default"): content = open(filename, "r") doc = yaml.load(content) if "global_config" in doc: cls.global_config = doc["global_config"] if "site_config" in doc: cls.site_config = doc["site_config"] if site == "default": cls.site = cls.site_config["default"] else: cls.site = site if cls.site not in cls.site_config: log.failed("Not found specified site name '%s'" % cls.site)
def wait_for_loading(self, pathname="", timeout=15): self.driver.switch_to_window(self.driver.window_handles[-1]) url = self.get_url(pathname) if "://" in url: uri = urlparse(url) url = uri.scheme + '://' + uri.hostname + uri.path ## wait until browser shows expected url wait = ui.WebDriverWait(self.driver, timeout) try: wait.until(lambda driver : self.driver.current_url.find(url) != -1) return True except: log.failed("Page load timeout (%s sec)." % timeout, self.driver.current_url, url) return False
def load_browser_sizes(cls, filename): content = open(filename, "r") doc = yaml.load(content) for item in doc['browser_sizes']: try: name = item['name'] size = item['size'] width = int(size.split('x')[0].strip()) height = int(size.split('x')[1].strip()) cls.browser_sizes[name] = { 'width': width, 'height': height } except: log.failed("Invalid responsive configuration, please check");
def get_browser_size(cls, name): if name in cls.browser_sizes: return cls.browser_sizes[name] else: log.failed("Not found responsive config '%s'" % name)
def step_impl(context, element_name, pattern): element = world.find_element(element_name) if re.match(pattern, element.value): return True else: log.failed("Verify value match with pattern?", element.value, pattern)
def step_impl(context, element_name, value): value = world.replace_variables(value) element = world.find_element(element_name) if not element.send_keys(value): log.failed("Fail to enters value '%s' to '%s'" % (value, element.name))
def step_impl(context, element_name): element = world.find_element(element_name) if element.value != "": return True log.failed("Verify value is not empty?", element.value, "<any value>")