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})
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})