I want to use remote debug files for Chrome devtools ( link ) from Python. I am using code adapted from here .
I managed to get ping and list_tabs . But I can not figure out how to evaluate_javascript . Can someone tell me what I am doing wrong?
import subprocess import time, json, socket from jca.files import my_paths def request(tool, destination=None, **kw): # Send a command via socket to 'DevToolsService' or 'V8Debugger' j = json.dumps(kw) request = 'Content-Length:%d\r\nTool:%s\r\n' % (len(j), tool) if destination: request += 'Destination:%s\r\n' % (destination,) request += '\r\n%s\r\n' % (j,) sock.send(request) if kw.get('command', '') not in RESPONSELESS_COMMANDS: time.sleep(.1) response = sock.recv(30000) if response.strip(): j = response.split('\r\n\r\n', 1)[1] return json.loads(j) if __name__ == '__main__': proc = subprocess.Popen('"%s" --remote-shell-port=9222' % my_paths.chrome_exe) RESPONSELESS_COMMANDS = ['evaluate_javascript'] sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect(('localhost', 9222)) sock.send('ChromeDevToolsHandshake\r\n') result = sock.recv(1024) print 'ping: ', request('DevToolsService', command='ping') time.sleep(4) print 'list_tabs: ', request('DevToolsService', command='list_tabs') request('V8Debugger', command='evaluate_javascript', data='javascript:window.location.reload()') sock.close() print 'done'
source share