| Index: chrome/test/pyautolib/chrome_driver_factory.py
|
| ===================================================================
|
| --- chrome/test/pyautolib/chrome_driver_factory.py (revision 261231)
|
| +++ chrome/test/pyautolib/chrome_driver_factory.py (working copy)
|
| @@ -1,82 +0,0 @@
|
| -# Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -# Use of this source code is governed by a BSD-style license that can be
|
| -# found in the LICENSE file.
|
| -
|
| -"""Factory that creates ChromeDriver instances for pyauto."""
|
| -
|
| -import os
|
| -import random
|
| -import tempfile
|
| -
|
| -import pyauto_paths
|
| -from selenium import webdriver
|
| -from selenium.webdriver.chrome import service
|
| -
|
| -
|
| -class ChromeDriverFactory(object):
|
| - """"Factory that creates ChromeDriver instances for pyauto.
|
| -
|
| - Starts a single ChromeDriver server when necessary. Users should call 'Stop'
|
| - when no longer using the factory.
|
| - """
|
| -
|
| - def __init__(self, port=0):
|
| - """Initialize ChromeDriverFactory.
|
| -
|
| - Args:
|
| - port: The port for WebDriver to use; by default the service will select a
|
| - free port.
|
| - """
|
| - self._chromedriver_port = port
|
| - self._chromedriver_server = None
|
| -
|
| - def NewChromeDriver(self, pyauto):
|
| - """Creates a new remote WebDriver instance.
|
| -
|
| - This instance will connect to a new automation provider of an already
|
| - running Chrome.
|
| -
|
| - Args:
|
| - pyauto: pyauto.PyUITest instance
|
| -
|
| - Returns:
|
| - selenium.webdriver.remote.webdriver.WebDriver instance.
|
| - """
|
| - if pyauto.IsChromeOS():
|
| - os.putenv('DISPLAY', ':0.0')
|
| - os.putenv('XAUTHORITY', '/home/chronos/.Xauthority')
|
| - self._StartServerIfNecessary()
|
| - channel_id = 'testing' + hex(random.getrandbits(20 * 4))[2:-1]
|
| - if not pyauto.IsWin():
|
| - channel_id = os.path.join(tempfile.gettempdir(), channel_id)
|
| - pyauto.CreateNewAutomationProvider(channel_id)
|
| - return webdriver.Remote(self._chromedriver_server.service_url,
|
| - {'chrome.channel': channel_id,
|
| - 'chrome.noWebsiteTestingDefaults': True})
|
| -
|
| - def _StartServerIfNecessary(self):
|
| - """Starts the ChromeDriver server, if not already started."""
|
| - if self._chromedriver_server is None:
|
| - exe = pyauto_paths.GetChromeDriverExe()
|
| - assert exe, 'Cannot find chromedriver exe. Did you build it?'
|
| - self._chromedriver_server = service.Service(exe, self._chromedriver_port)
|
| - self._chromedriver_server.start()
|
| -
|
| - def Stop(self):
|
| - """Stops the ChromeDriver server, if running."""
|
| - if self._chromedriver_server is not None:
|
| - self._chromedriver_server.stop()
|
| - self._chromedriver_server = None
|
| -
|
| - def GetPort(self):
|
| - """Gets the port ChromeDriver is set to use.
|
| -
|
| - Returns:
|
| - The port all ChromeDriver instances returned from NewChromeDriver() will
|
| - be listening on. A return value of 0 indicates the ChromeDriver service
|
| - will select a free port.
|
| - """
|
| - return self._chromedriver_port
|
| -
|
| - def __del__(self):
|
| - self.Stop()
|
|
|