| import logging |
| import os |
| |
| from webkitpy.benchmark_runner.browser_driver.osx_browser_driver import OSXBrowserDriver |
| |
| |
| _log = logging.getLogger(__name__) |
| |
| |
| class OSXChromeDriverBase(OSXBrowserDriver): |
| app_name = None |
| |
| # FIXME: handle self._browser_path. |
| def launch_args_with_url(self, url): |
| return ['--args', '--homepage', url, self._window_size_arg(), '--no-first-run', |
| '--no-default-browser-check', '--disable-extensions'] |
| |
| def launch_url(self, url, options, browser_build_path, browser_path): |
| self._launch_process(build_dir=browser_build_path, app_name=self.app_name, url=url, args=self.launch_args_with_url(url)) |
| |
| def launch_driver(self, url, options, browser_build_path): |
| from selenium import webdriver |
| chrome_options = self._create_chrome_options(browser_build_path) |
| driver_executable = self.webdriver_binary_path |
| driver = webdriver.Chrome(chrome_options=chrome_options, executable_path=driver_executable) |
| self._launch_webdriver(url=url, driver=driver) |
| return driver |
| |
| def _create_chrome_options(self, browser_build_path): |
| from selenium.webdriver.chrome.options import Options |
| chrome_options = Options() |
| chrome_options.add_argument("--disable-web-security") |
| chrome_options.add_argument("--user-data-dir") |
| chrome_options.add_argument("--disable-extensions") |
| chrome_options.add_argument(self._window_size_arg()) |
| self._set_chrome_binary_location(chrome_options, browser_build_path) |
| return chrome_options |
| |
| def _window_size_arg(self): |
| screen_size = self._screen_size() |
| return '--window-size={width},{height}'.format(width=int(screen_size.width), height=int(screen_size.height)) |
| |
| def _set_chrome_binary_location(self, options, browser_build_path): |
| pass |
| |
| def set_binary_location_impl(options, browser_build_path, app_name, process_name): |
| if not browser_build_path: |
| return |
| app_path = os.path.join(browser_build_path, app_name) |
| binary_path = os.path.join(app_path, "Contents/MacOS", process_name) |
| options.binary_location = binary_path |
| |
| |
| class OSXChromeDriver(OSXChromeDriverBase): |
| process_name = 'Google Chrome' |
| browser_name = 'chrome' |
| app_name = 'Google Chrome.app' |
| bundle_id = 'com.google.Chrome' |
| |
| def _set_chrome_binary_location(self, options, browser_build_path): |
| set_binary_location_impl(options, browser_build_path, self.app_name, self.process_name) |
| |
| |
| class OSXChromeCanaryDriver(OSXChromeDriverBase): |
| process_name = 'Google Chrome Canary' |
| browser_name = 'chrome-canary' |
| app_name = 'Google Chrome Canary.app' |
| bundle_id = 'com.google.Chrome.canary' |
| |
| def _set_chrome_binary_location(self, options, browser_build_path): |
| set_binary_location_impl(options, browser_build_path, self.app_name, self.process_name) |
| |
| def launch_args_with_url(self, url): |
| return super(OSXChromeCanaryDriver, self).launch_args_with_url(url) + ['--enable-field-trial-config'] |
| |
| |
| class OSXChromeBetaDriver(OSXChromeDriverBase): |
| process_name = 'Google Chrome Beta' |
| browser_name = 'chrome-beta' |
| app_name = 'Google Chrome Beta.app' |
| bundle_id = 'com.google.Chrome.beta' |
| |
| def _set_chrome_binary_location(self, options, browser_build_path): |
| set_binary_location_impl(options, browser_build_path, self.app_name, self.process_name) |
| |
| def launch_args_with_url(self, url): |
| return super(OSXChromeBetaDriver, self).launch_args_with_url(url) + ['--enable-field-trial-config'] |
| |
| class OSXChromeDevDriver(OSXChromeDriverBase): |
| process_name = 'Google Chrome Dev' |
| browser_name = 'chrome-dev' |
| app_name = 'Google Chrome Dev.app' |
| bundle_id = 'com.google.Chrome.dev' |
| |
| def _set_chrome_binary_location(self, options, browser_build_path): |
| set_binary_location_impl(options, browser_build_path, self.app_name, self.process_name) |
| |
| def launch_args_with_url(self, url): |
| return super(OSXChromeDevDriver, self).launch_args_with_url(url) + ['--enable-field-trial-config'] |