This repository has been archived by the owner on Nov 2, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathm_viewer.py
77 lines (60 loc) · 1.9 KB
/
m_viewer.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#!/usr/bin/python
import sys
import logging
import logging.config
import subprocess
from marionette import Marionette
from SimpleXMLRPCServer import SimpleXMLRPCServer
from SimpleXMLRPCServer import SimpleXMLRPCRequestHandler
flog = open("/tmp/m.log", "w")
logging.basicConfig()
logger = logging.getLogger('m_viewer')
logger.info('start marionette client')
def init():
ret = subprocess.check_output("adb devices", shell=True)
if("unagi" in ret):
print(ret)
else:
print("No unagi connected")
sys.exit(1)
import socket
s = socket.socket()
try:
s.bind(("localhost", 2828))
s.close()
ret = subprocess.check_output("adb forward tcp:2828 tcp:2828", shell=True)
except socket.error:
print("address already in use")
mar = Marionette()
mar.start_session()
return mar
## Start a marionette instance
m = init()
## Restrict to a particular path.
class RequestHandler(SimpleXMLRPCRequestHandler):
rpc_paths = ('/RPC2',)
## Create server
server = SimpleXMLRPCServer(("localhost", 1337),
requestHandler=RequestHandler)
server.register_introspection_functions()
server.register_instance(m)
# Register pow() function; this will use the value of
# pow.__name__ as the name, which is just 'pow'.
def get_page_source():
return m.page_source
server.register_function(get_page_source)
def enter_frame(iframe=None):
flog.write('write iframe = %s' % iframe)
if iframe is None:
m.switch_to_frame()
return m.page_source
fr = m.find_element("css selector", 'iframe[%s]' % iframe)
logger.info('iframe[%s]' % iframe)
m.switch_to_frame(fr)
return m.page_source
server.register_function(enter_frame)
## Register an instance; all the methods of the instance are
## published as XML-RPC methods (in this case, just 'div').
## Run the server's main loop
server.serve_forever()
flog.close()