Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

windows chrome refresh tab 0(or current tab) via command line

I'm trying to do it with python, webbrowser module. But it does not have Chromium-specific functions. Is there another way? probably with a batch script?

like image 731
prongs Avatar asked Oct 08 '22 07:10

prongs


1 Answers

I use this myself: (I wrote is quickly as it was only for personal use). With a lot of clean up you might be able to get what you want. See https://developers.google.com/chrome-developer-tools/docs/remote-debugging

import urllib2
import urllib
import os
import subprocess
import json

from websocket import create_connection

def refresh_page(url):
    data = json.load(urllib2.urlopen('http://localhost:9222/json'))

    found_page = False
    for page in data:
        if page['url'].lower() == url.lower():
            found_page = True
            websocketURL = page['webSocketDebuggerUrl']
            ws = create_connection(websocketURL)

            obj = {  "id": 0,
                     "method": "Page.reload",
                     "params":
                     {
                       "ignoreCache": True,
                       "scriptToEvaluateOnLoad": ""
                     }
                  }

            dev_request = json.dumps(obj)
            ws.send(dev_request)
            result =  ws.recv()
            ws.close()
    if not found_page:
        raise Exception("No pageFound")

def open_or_refresh(file_name):
    file_name = "".join ( [f if f in r'\/:*?"<>|' else  urllib.quote(f) for f in file_name] )
    file_name = 'file:///' + file_name.replace('\\', '/')
    file_name = file_name.encode('ascii', 'ignore')
    try:
        refresh_page(file_name)
    except:
        cmd = (r'"%(LOCALAPPDATA)s\Google\Chrome\Application\chrome.exe"'%os.environ
               + r' --remote-debugging-port=9222  "%s"' % file_name)
        subprocess.Popen(cmd)

open_or_refresh(r"C:\test.html")
open_or_refresh(r"C:\test.html")
like image 196
Charles Beattie Avatar answered Oct 13 '22 11:10

Charles Beattie