create temp dir for user profile rather than rely on --temp-profile

This commit is contained in:
Noah Levitt 2014-02-14 19:45:16 -08:00
parent b4846e1063
commit b96d8856d4

View file

@ -12,6 +12,7 @@ import threading
import subprocess
import signal
from kombu import Connection, Exchange, Queue
import tempfile
class UmbraWorker:
logger = logging.getLogger('umbra.UmbraWorker')
@ -31,7 +32,8 @@ class UmbraWorker:
with self.lock:
self.url = url
self.url_metadata = url_metadata
with Chrome(self.chrome_port, self.chrome_exe, self.chrome_wait) as websocket_url:
with tempfile.TemporaryDirectory() as user_data_dir:
with Chrome(self.chrome_port, self.chrome_exe, self.chrome_wait, user_data_dir) as websocket_url:
websock = websocket.WebSocketApp(websocket_url,
on_open=self.visit_page, on_message=self.handle_message)
websock_thread = threading.Thread(target=websock.run_forever)
@ -159,10 +161,11 @@ class Umbra:
class Chrome:
logger = logging.getLogger('umbra.Chrome')
def __init__(self, port, executable, browser_wait):
def __init__(self, port, executable, browser_wait, user_data_dir):
self.port = port
self.executable = executable
self.browser_wait = browser_wait
self.user_data_dir = user_data_dir
def fetch_debugging_json():
raw_json = urllib.request.urlopen("http://localhost:%s/json" % self.port).read()
@ -171,7 +174,8 @@ class Chrome:
# returns websocket url to chrome window with about:blank loaded
def __enter__(self):
chrome_args = [self.executable, "--temp-profile",
chrome_args = [self.executable,
"--user-data-dir={}".format(self.user_data_dir),
"--remote-debugging-port=%s" % self.port,
"--disable-web-sockets", "--disable-cache",
"--window-size=1100,900", "--enable-logging",