コード例 #1
0
    def handle_step(self, step_info):
        for elem_info in step_info['elems']:
            name = list(elem_info.keys())[0]
            value = str(elem_info[name])

            # potentially returns more than one element
            elem = self.browser.find_by_name(name)

            # infer action from HTML tag
            # fails if splinter/selenium changes their API
            input_type = elem._element.get_property('type')
            if input_type == "radio":
                elem = ElementList(
                    filter(lambda e: e.value == str(value), elem))
                elem.check()
            elif input_type == "checkbox":
                if value:
                    elem.check()
            elif input_type == "select":
                elem.select(value)
            else:
                elem.fill(value)