@step(r'drag the page element "([^"]+)" and drop it on the%s %s %s$' % ( PICK_EXPRESSION, ELEMENT_THING_STRING, finder_string)) def _drag_page_el_2_thing(step, element_name, pick, find_pattern): src = get_visible_page_element(element_name) target = _get_visible_element(finder_function, pick, find_pattern) action_chain = ActionChains(world.browser.driver) action_chain.drag_and_drop(src, target) action_chain.perform() def _generate_drag_and_drop(): @step(r'drag the page element "([^"]+)" and drop it on the page element "([^"]+)"$') def _drag_page_el_2_page_el(step, elemant_name_src, element_name_target): src = get_visible_page_element(elemant_name_src) target = get_visible_page_element(element_name_target) action_chain = ActionChains(world.browser.driver) action_chain.drag_and_drop(src, target) action_chain.perform() for _action_string, _action_function in ACTIONS.iteritems(): _generate_action_step(_action_string, _action_function) for finder_string, finder_function in ELEMENT_FINDERS.iteritems(): _generate_action_step_inside(finder_string, finder_function, _action_string, _action_function) _generate_drag_and_drop() for finder_string, finder_function in ELEMENT_FINDERS.iteritems(): _generate_hybrid_drag_and_drop(finder_string, finder_function)
elif type_of_fill == 'string': return _generate_random_string(length) elif type_of_fill == 'name': name = _generate_random_string(length) if length <= 3: return name index = randint(1, len(name) - 2) return name[:index] + ' ' + name[index + 1:] def _generate_random_string(length): lst = [choice(ascii_letters) for n in xrange(length)] return "".join(lst) for finder_string, finder_function in ELEMENT_FINDERS.iteritems(): def _type_generator(finder_string, finder_function): @step(r'(slowly )?type "([^"]*)" into the%s %s %s' % (PICK_EXPRESSION, ELEMENT_THING_STRING, finder_string)) def _this_step(step, slowly, text, pick, find_pattern): ele = _get_visible_element(finder_function, pick, find_pattern) if slowly and slowly != "": _type_slowly(ele, text) else: ele.value = text return _this_step globals()["form_type_%s" % (finder_function, )] = _type_generator( finder_string, finder_function)
def _this_step(step, handler_pick, drag_handler_pattern, target_pick, drag_target_pattern): handler = _get_visible_element(finder_function_from, handler_pick, drag_handler_pattern) target = _get_visible_element(finder_function_to, target_pick, drag_target_pattern) action_chain = ActionChains(world.browser.driver) action_chain.drag_and_drop(handler, target) action_chain.perform() return _this_step for action_string, action_function in ACTIONS.iteritems(): for finder_string, finder_function in ELEMENT_FINDERS.iteritems(): globals()["element_%s_%s" % (action_function, finder_function)] = ( step_generator(action_string, action_function, ELEMENT_THING_STRING, finder_string, finder_function)) for finder_string, finder_function in LINK_FINDERS.iteritems(): globals()["link_%s_%s" % (action_function, finder_function)] = ( step_generator(action_string, action_function, LINK_THING_STRING, finder_string, finder_function)) for finder_str_from, findr_func_from in ELEMENT_FINDERS.iteritems(): for finder_str_to, findr_func_to in ELEMENT_FINDERS.iteritems(): globals()["element_drag_%s_%s" % (findr_func_from, findr_func_to)] = ( drag_and_drop_generator(ELEMENT_THING_STRING, finder_str_from,
def _this_step(step, handler_pick, drag_handler_pattern, target_pick, drag_target_pattern): handler = _get_visible_element(finder_function_from, handler_pick, drag_handler_pattern) target = _get_visible_element(finder_function_to, target_pick, drag_target_pattern) action_chain = ActionChains(world.browser.driver) action_chain.drag_and_drop(handler, target) action_chain.perform() return _this_step for action_string, action_function in ACTIONS.iteritems(): for finder_string, finder_function in ELEMENT_FINDERS.iteritems(): globals()["element_%s_%s" % (action_function, finder_function)] = (step_generator( action_string, action_function, ELEMENT_THING_STRING, finder_string, finder_function)) for finder_string, finder_function in LINK_FINDERS.iteritems(): globals()["link_%s_%s" % (action_function, finder_function)] = (step_generator( action_string, action_function, LINK_THING_STRING, finder_string, finder_function)) for finder_str_from, findr_func_from in ELEMENT_FINDERS.iteritems(): for finder_str_to, findr_func_to in ELEMENT_FINDERS.iteritems(): globals()["element_drag_%s_%s" % (findr_func_from, findr_func_to)] = (drag_and_drop_generator(
def _make_steps(self): for finder_string, finder_function in ELEMENT_FINDERS.iteritems(): self._make_step(finder_string, finder_function)