Tôi muốn sử dụng công cụ gỡ lỗi ổ cắm từ xa cho Chrome devtools (link) từ Python. Tôi đang sử dụng mã được điều chỉnh từ here.Sử dụng chrome devtools từ xa từ Python
Tôi đã quản lý để có được ping
và list_tabs
hoạt động. Nhưng tôi không thể tìm ra cách để evaluate_javascript
. Ai có thể cho tôi biết tôi đang làm gì sai?
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'
Vâng, tôi biết về thư viện Java. (Tôi thực sự có cùng một liên kết trong câu hỏi của tôi nếu bạn xem xét chặt chẽ :) Đã không nghĩ về việc tìm kiếm thông qua các nguồn mặc dù. Đoán tôi sẽ thử rằng nếu không ai có ý tưởng nào tốt hơn. –
Rất tiếc, xin lỗi, giờ tôi thấy. Tôi thực sự không khuyên bạn nên đọc nhiều nguồn - chúng khá phức tạp (một phần do hỗ trợ giao thức Chrome mới "WIP"), tìm kiếm từ trình gỡ lỗi cách nó chạy có thể thú vị hơn :) – beefeather
Điều bạn có thể thấy thú vị là http : //code.google.com/p/chromedevtools/source/browse/#svn%2Ftrunk%2Fplugins%2Forg.chromium.sdk%2Fsrc%2Forg%2Fchromium%2Fsdk%2Finternal%2Fv8native%2Fprotocol%2Finput - nó chứa Java các giao diện thực sự là định nghĩa giao thức 1: 1 (chỉ dành cho dữ liệu đến). – beefeather