![](/img/trans.png)
[英]Using chrome.tabs.captureVisibleTab() from DevTools console
[英]Using remote chrome devtools from Python
我想使用来自 Python 的 Chrome 开发工具(链接)的远程套接字调试东西。 我正在使用从这里改编的代码。
我设法让ping
和list_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.