Python'dan Chrome devtools (link) için uzak soket hata ayıklama ürünlerini kullanmak istiyorum. here'dan uyarlanmış bir kod kullanıyorum.Python'dan uzaktan krom ayraçları kullanma
ping
ve list_tabs
ürününü çalıştırmayı başardım. Ancak, evaluate_javascript
'un nasıl olduğunu anlayamıyorum. Bana yanlış ne yaptığımı söyleyen var mı? Java kodunu çalıştıran Tamam olması durumunda bir referans uygulaması olarak buna sahip olabilir, muhtemelen değil rastgele Python seçilen yana http://code.google.com/p/chromedevtools/
: Ben spam için üzgünüm
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'
Evet, Java kütüphanesini biliyorum. (Eğer yakından bakarsanız, sorum olarak aynı bağlantıya sahibim :) Kaynaktan bakmayı düşünmemiştim. Sanırım kimsenin daha iyi bir fikri yoksa onu deneyeceğim. –
Oops, üzgünüm, şimdi anladım. Ben gerçekten çok fazla okuma kaynakları tavsiye etmem - (kısmen yeni Chrome protokolü "WIP" desteğiyle) oldukça karmaşıktır, hata ayıklayıcısından nasıl çalıştığı daha eğlenceli olabilir :) – beefeather
Ne ilginç bulabilirsin http : //code.google.com/p/chromedevtools/source/browse/#svn%2Ftrunk%2Fplugins%2Forg.chromium.sdk%2Fsrc%2Forg%2Fchromium%2Fsdk%2Finternal%2Fv8native%2Fprotocol%2Finput - Java içeriyor aslında 1: 1 protokol tanımı olan arayüzler (sadece gelen veriler için). – beefeather