|
1 #!/usr/bin/env python |
|
2 # This Source Code Form is subject to the terms of the Mozilla Public |
|
3 # License, v. 2.0. If a copy of the MPL was not distributed with this |
|
4 # file, You can obtain one at http://mozilla.org/MPL/2.0/. |
|
5 import re |
|
6 import sys |
|
7 import telnetlib |
|
8 |
|
9 class JsshDriver: |
|
10 |
|
11 COMMAND_PROMPT = "\n> " |
|
12 |
|
13 def __init__(self, host=None, port=9997, telnetklass=telnetlib.Telnet): |
|
14 """Ctor |
|
15 Ctor |
|
16 """ |
|
17 self.host = host |
|
18 self.port = port |
|
19 self.tn = telnetklass(host,port) |
|
20 self.init() |
|
21 |
|
22 def open(self,host,port=9997): |
|
23 self.tn.close() |
|
24 self.host = host |
|
25 self.port = port |
|
26 self.tn.open(host,port) |
|
27 self.init() |
|
28 |
|
29 def init(self): |
|
30 if not self.tn.get_socket(): |
|
31 return |
|
32 |
|
33 self.tn.read_until(JsshDriver.COMMAND_PROMPT) |
|
34 self.send_command("setProtocol('synchronous')") |
|
35 |
|
36 def send_command(self,command): |
|
37 self.tn.write(command + "\n") |
|
38 return self.tn.read_until(JsshDriver.COMMAND_PROMPT) |
|
39 |
|
40 def send_quit(self): |
|
41 self.tn.write("quit()\n") |
|
42 return self.tn.read_all() |
|
43 |
|
44 class JsshTester: |
|
45 |
|
46 def __init__(self, host, port=9997, telnetklass=telnetlib.Telnet): |
|
47 self.browser = JsshDriver(host,port,telnetklass) |
|
48 |
|
49 def __del__(self): |
|
50 self.browser.send_quit() |
|
51 |
|
52 def get_innerHTML_from_URL(self,url): |
|
53 self.browser.send_command ('var browser = getWindows()[0].getBrowser()') |
|
54 |
|
55 if url: |
|
56 self.browser.send_command ('browser.loadURI("' + url + '")') |
|
57 |
|
58 self.browser.send_command ('var document = browser.contentDocument') |
|
59 self.browser.send_command ('var window = browser.contentWindow') |
|
60 jssh_response = self.browser.send_command ('print(document.documentElement.innerHTML)') |
|
61 |
|
62 m = re.compile(r"\[(?P<len>\d+)](?P<rest>.*)", re.DOTALL).search(jssh_response) |
|
63 |
|
64 return m.group('rest')[0:int(m.group('len'))] |