michael@0: #!/usr/bin/env python michael@0: # This Source Code Form is subject to the terms of the Mozilla Public michael@0: # License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: # file, You can obtain one at http://mozilla.org/MPL/2.0/. michael@0: import re michael@0: import sys michael@0: import telnetlib michael@0: michael@0: class JsshDriver: michael@0: michael@0: COMMAND_PROMPT = "\n> " michael@0: michael@0: def __init__(self, host=None, port=9997, telnetklass=telnetlib.Telnet): michael@0: """Ctor michael@0: Ctor michael@0: """ michael@0: self.host = host michael@0: self.port = port michael@0: self.tn = telnetklass(host,port) michael@0: self.init() michael@0: michael@0: def open(self,host,port=9997): michael@0: self.tn.close() michael@0: self.host = host michael@0: self.port = port michael@0: self.tn.open(host,port) michael@0: self.init() michael@0: michael@0: def init(self): michael@0: if not self.tn.get_socket(): michael@0: return michael@0: michael@0: self.tn.read_until(JsshDriver.COMMAND_PROMPT) michael@0: self.send_command("setProtocol('synchronous')") michael@0: michael@0: def send_command(self,command): michael@0: self.tn.write(command + "\n") michael@0: return self.tn.read_until(JsshDriver.COMMAND_PROMPT) michael@0: michael@0: def send_quit(self): michael@0: self.tn.write("quit()\n") michael@0: return self.tn.read_all() michael@0: michael@0: class JsshTester: michael@0: michael@0: def __init__(self, host, port=9997, telnetklass=telnetlib.Telnet): michael@0: self.browser = JsshDriver(host,port,telnetklass) michael@0: michael@0: def __del__(self): michael@0: self.browser.send_quit() michael@0: michael@0: def get_innerHTML_from_URL(self,url): michael@0: self.browser.send_command ('var browser = getWindows()[0].getBrowser()') michael@0: michael@0: if url: michael@0: self.browser.send_command ('browser.loadURI("' + url + '")') michael@0: michael@0: self.browser.send_command ('var document = browser.contentDocument') michael@0: self.browser.send_command ('var window = browser.contentWindow') michael@0: jssh_response = self.browser.send_command ('print(document.documentElement.innerHTML)') michael@0: michael@0: m = re.compile(r"\[(?P\d+)](?P.*)", re.DOTALL).search(jssh_response) michael@0: michael@0: return m.group('rest')[0:int(m.group('len'))]