Skip to content

Instantly share code, notes, and snippets.

@LowWeiLin
Created October 16, 2019 14:25
Show Gist options
  • Save LowWeiLin/f9c7db22b2f47009d95c4ac0fe715f8d to your computer and use it in GitHub Desktop.
Save LowWeiLin/f9c7db22b2f47009d95c4ac0fe715f8d to your computer and use it in GitHub Desktop.
import json
import time
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.chrome.options import Options
def process_browser_log_entry(entry):
entry["message"] = json.loads(entry["message"])["message"]
return entry
def get_network_events():
browser_log = driver.get_log("performance")
events = [process_browser_log_entry(entry) for entry in browser_log]
events = [entry for entry in events if "Network." in entry["message"]["method"]]
return events
caps = DesiredCapabilities.CHROME
caps["loggingPrefs"] = {"performance": "ALL"}
caps["chromeOptions"] = {"w3c": False, "headless": True}
chrome_options = Options()
chrome_options.add_argument("--disable-extensions")
chrome_options.add_argument("--disable-gpu")
# chrome_options.add_argument("--headless")
driver = webdriver.Chrome(options=chrome_options, desired_capabilities=caps)
driver.get(
"https://stackoverflow.com/questions/53657215/running-selenium-with-headless-chrome-webdriver"
)
print("wait for everything to load...")
time.sleep(10)
network_events = get_network_events()
json.dump(network_events, open("log.json", "w"))
print(
"Network time: {}s".format(
(
network_events[-1]["message"]["params"]["timestamp"]
- network_events[0]["message"]["params"]["timestamp"]
)
)
)
driver.close()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment