簡體   English   中英

使用來自 Python 的遠程 chrome devtools

[英]Using remote chrome devtools from Python

我想使用來自 Python 的 Chrome 開發工具(鏈接)的遠程套接字調試東西。 我正在使用從這里改編的代碼。

我設法讓pinglist_tabs正常工作。 但我不知道如何evaluate_javascript 誰能告訴我我做錯了什么?

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'

對於垃圾郵件,我很抱歉,這里有一個 Java 庫: http://code.google.com/p/chromedevtools/

由於您可能不是隨機選擇了 Python,因此如果您可以運行 Java 代碼,您可以將其作為參考實現。 我想您可以檢查從 Java 調試器發送和接收的實際消息。

問題是我沒有為目的地設置 tab_id。 將destination=2 添加到請求調用可以解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM