tools/test-harness/jssh-driver/jssh_driver.py

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/tools/test-harness/jssh-driver/jssh_driver.py	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,64 @@
     1.4 +#!/usr/bin/env python
     1.5 +# This Source Code Form is subject to the terms of the Mozilla Public
     1.6 +# License, v. 2.0. If a copy of the MPL was not distributed with this
     1.7 +# file, You can obtain one at http://mozilla.org/MPL/2.0/.
     1.8 +import re
     1.9 +import sys
    1.10 +import telnetlib
    1.11 +
    1.12 +class JsshDriver:
    1.13 +
    1.14 +    COMMAND_PROMPT = "\n> "
    1.15 +
    1.16 +    def __init__(self, host=None, port=9997, telnetklass=telnetlib.Telnet):
    1.17 +        """Ctor
    1.18 +        	Ctor
    1.19 +        """
    1.20 +        self.host = host
    1.21 +        self.port = port
    1.22 +        self.tn = telnetklass(host,port)
    1.23 +        self.init()
    1.24 +
    1.25 +    def open(self,host,port=9997):
    1.26 +        self.tn.close()
    1.27 +        self.host = host
    1.28 +        self.port = port
    1.29 +        self.tn.open(host,port)
    1.30 +        self.init()
    1.31 +
    1.32 +    def init(self):
    1.33 +        if not self.tn.get_socket():
    1.34 +            return
    1.35 +
    1.36 +        self.tn.read_until(JsshDriver.COMMAND_PROMPT)
    1.37 +        self.send_command("setProtocol('synchronous')")
    1.38 +	
    1.39 +    def send_command(self,command):
    1.40 +        self.tn.write(command + "\n")
    1.41 +        return self.tn.read_until(JsshDriver.COMMAND_PROMPT)
    1.42 +
    1.43 +    def send_quit(self):
    1.44 +        self.tn.write("quit()\n")
    1.45 +        return self.tn.read_all()
    1.46 +
    1.47 +class JsshTester:
    1.48 +
    1.49 +    def __init__(self, host, port=9997, telnetklass=telnetlib.Telnet):
    1.50 +        self.browser = JsshDriver(host,port,telnetklass)
    1.51 +
    1.52 +    def __del__(self):
    1.53 +        self.browser.send_quit()
    1.54 +
    1.55 +    def get_innerHTML_from_URL(self,url):
    1.56 +        self.browser.send_command ('var browser = getWindows()[0].getBrowser()')
    1.57 +
    1.58 +        if url:
    1.59 +            self.browser.send_command ('browser.loadURI("' + url + '")')
    1.60 +
    1.61 +        self.browser.send_command ('var document = browser.contentDocument')
    1.62 +        self.browser.send_command ('var window = browser.contentWindow')
    1.63 +        jssh_response = self.browser.send_command ('print(document.documentElement.innerHTML)')
    1.64 +
    1.65 +        m = re.compile(r"\[(?P<len>\d+)](?P<rest>.*)", re.DOTALL).search(jssh_response)
    1.66 +
    1.67 +        return m.group('rest')[0:int(m.group('len'))]

mercurial