Пример #1
0
    def do_POST(self):
        try:

            path, body, session, element = self.process_request()

            if path == '/back':
                assert(session)
                assert(self.server.marionette.go_back())
                self.send_JSON(session=session)
            elif path == '/clear':
                assert(session)
                marionette_element = HTMLElement(self.server.marionette, element)
                marionette_element.clear()
                self.send_JSON(session=session)
            elif path == '/click':
                assert(session)
                marionette_element = HTMLElement(self.server.marionette, element)
                marionette_element.click()
                self.send_JSON(session=session)
            elif path == '/element':
                # find element variants
                assert(session)
                self.send_JSON(session=session,
                               value={'ELEMENT': str(self.server.marionette.find_element(body['using'], body['value'], id=element))})
            elif path == '/elements':
                # find elements variants
                assert(session)
                self.send_JSON(session=session,
                               value=[{'ELEMENT': str(x)} for x in self.server.marionette.find_elements(body['using'], body['value'])])
            elif path == '/execute':
                assert(session)
                if body['args']:
                    result = self.server.marionette.execute_script(body['script'], script_args=body['args'])
                else:
                    result = self.server.marionette.execute_script(body['script'])
                self.send_JSON(session=session, value=result)
            elif path == '/execute_async':
                assert(session)
                if body['args']:
                    result = self.server.marionette.execute_async_script(body['script'], script_args=body['args'])
                else:
                    result = self.server.marionette.execute_async_script(body['script'])
                self.send_JSON(session=session, value=result)
            elif path == '/forward':
                assert(session)
                assert(self.server.marionette.go_forward())
                self.send_JSON(session=session)
            elif path == '/frame':
                assert(session)
                frame = body['id']
                if isinstance(frame, dict) and 'ELEMENT' in frame:
                    frame = HTMLElement(self.server.marionette, frame['ELEMENT'])
                assert(self.server.marionette.switch_to_frame(frame))
                self.send_JSON(session=session)
            elif path == '/refresh':
                assert(session)
                assert(self.server.marionette.refresh())
                self.send_JSON(session=session)
            elif path == '/session':
                session = self.server.marionette.start_session()
                # 'value' is the browser capabilities, which we're ignoring for now
                self.send_JSON(session=session, value={})
            elif path == '/timeouts/async_script':
                assert(session)
                assert(self.server.marionette.set_script_timeout(body['ms']))
                self.send_JSON(session=session)
            elif path == '/timeouts/implicit_wait':
                assert(session)
                assert(self.server.marionette.set_search_timeout(body['ms']))
                self.send_JSON(session=session)
            elif path == '/url':
                assert(session)
                assert(self.server.marionette.navigate(body['url']))
                self.send_JSON(session=session)
            elif path == '/value':
                assert(session)
                keys = ''.join(body['value'])
                marionette_element = HTMLElement(self.server.marionette, element)
                assert(marionette_element.send_keys(keys))
                self.send_JSON(session=session)
            elif path == '/window':
                assert(session)
                assert(self.server.marionette.switch_to_window(body['name']))
                self.send_JSON(session=session)
            else:
                self.file_not_found()

        except MarionetteException, e:
            self.send_JSON(data={'status': e.status}, value={'message': e.message})
Пример #2
0
    def do_GET(self):
        try:

            path, body, session, element = self.process_request()

            if path.startswith('/attribute/'):
                assert(session)
                name = path[len('/attribute/'):]
                marionette_element = HTMLElement(self.server.marionette, element)
                self.send_JSON(session=session,
                               value=marionette_element.get_attribute(name))
            elif path == '/displayed':
                assert(session)
                marionette_element = HTMLElement(self.server.marionette, element)
                self.send_JSON(session=session,
                               value=marionette_element.displayed())
            elif path == '/enabled':
                assert(session)
                marionette_element = HTMLElement(self.server.marionette, element)
                self.send_JSON(session=session,
                               value=marionette_element.enabled())
            elif path.startswith('/equals/'):
                assert(session)
                other = path[len('/equals'):]
                marionette_element = HTMLElement(self.server.marionette, element)
                other_element = HTMLElement(self.server.marionette, other)
                self.send_JSON(session=session,
                               value=marionette_element.equals(other))
            elif path == '/selected':
                assert(session)
                marionette_element = HTMLElement(self.server.marionette, element)
                self.send_JSON(session=session,
                               value=marionette_element.selected())
            elif path == '/status':
                self.send_JSON(data=self.server.marionette.status())
            elif path == '/text':
                assert(session)
                marionette_element = HTMLElement(self.server.marionette, element)
                self.send_JSON(session=session,
                               value=marionette_element.text())
            elif path == '/url':
                assert(session)
                self.send_JSON(value=self.server.marionette.get_url(),
                               session=session)
            elif path == '/value':
                assert(session)
                marionette_element = HTMLElement(self.server.marionette, element)
                send.send_JSON(session=session,
                               value=marionette_element.value())
            elif path == '/window_handle':
                assert(session)
                self.send_JSON(session=session,
                               value=self.server.marionette.get_window())
            elif path == '/window_handles':
                assert(session)
                self.send_JSON(session=session,
                               value=self.server.marionette.get_windows())
            else:
                self.file_not_found()

        except MarionetteException, e:
            self.send_JSON(data={'status': e.status}, value={'message': e.message})