Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(189)

Unified Diff: tools/telemetry/telemetry/core/webdriver/webdriver_desktop_browser_finder.py

Issue 20672002: [telemetry] Add a webdriver backend with support for IE. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/telemetry/telemetry/core/webdriver/webdriver_desktop_browser_finder.py
diff --git a/tools/telemetry/telemetry/core/webdriver/webdriver_desktop_browser_finder.py b/tools/telemetry/telemetry/core/webdriver/webdriver_desktop_browser_finder.py
new file mode 100644
index 0000000000000000000000000000000000000000..9e1ffffc571fba761479ced04fc8cc93baf3f8af
--- /dev/null
+++ b/tools/telemetry/telemetry/core/webdriver/webdriver_desktop_browser_finder.py
@@ -0,0 +1,66 @@
+# Copyright (c) 2013 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.
+"""Finds desktop browsers that can be controlled by telemetry."""
+
+import os
+import sys
+
+from telemetry.core import browser
+from telemetry.core import possible_browser
+from telemetry.core.platform import win_platform_backend
+from telemetry.core.webdriver import webdriver_browser_backend
+
+
+# Add webdriver selenium client to PYTHONPATH.
+sys.path.insert(0, os.path.join(os.path.dirname(__file__),
+ '..', '..', '..', '..', '..', 'third_party',
tonyg 2013/07/26 18:21:07 util.GetChromiumSrcDir()
chrisgao (Use stgao instead) 2013/07/30 02:06:49 Thx, this makes it easier and cleaner.
+ 'webdriver', 'pylib'))
+from selenium import webdriver # pylint: disable=F0401
+
+ALL_BROWSER_TYPES = ','.join([
+ 'webdriver.ie32',
tonyg 2013/07/26 18:21:07 Since these are user-facing names, can we call the
chrisgao (Use stgao instead) 2013/07/30 02:06:49 Done.
+ 'webdriver.ie64'])
+
+
+class PossibleIEDesktopBrowser(possible_browser.PossibleBrowser):
tonyg 2013/07/26 18:21:07 Should this really be called PossibleIE or just Po
chrisgao (Use stgao instead) 2013/07/30 02:06:49 I don't think firefox can share the same class, as
+ """A desktop browser that can be controlled."""
+
+ def __init__(self, browser_type, options, bit):
+ super(PossibleIEDesktopBrowser, self).__init__(browser_type, options)
+ self._bit = bit
+
+ def __repr__(self):
+ return 'PossibleIEDesktopBrowser(browser_type=%s)' % self.browser_type
+
+ def Create(self):
+ # TODO Currently require that IEDriver.exe is in PATH.
chrisgao (Use stgao instead) 2013/07/26 16:58:00 IEDriver.exe -> IEDriverServer.exe
tonyg 2013/07/26 18:21:07 Can we check for this and display a user-friendly
chrisgao (Use stgao instead) 2013/07/30 02:06:49 Done.
chrisgao (Use stgao instead) 2013/07/30 02:06:49 We can delegate this to the underlying IE Driver a
+ driver = webdriver.Ie()
+ backend = webdriver_browser_backend.WebDriverBrowserBackend(
+ driver, False, self._options)
+ b = browser.Browser(backend, win_platform_backend.WinPlatformBackend())
+ backend.SetBrowser(b)
+ return b
+
+ def SupportsOptions(self, options):
+ return True
+
+
+def FindAllAvailableBrowsers(options):
+ """Finds all the desktop browsers available on this machine."""
+ browsers = []
+
+ # Look for the IE browser in the standard location.
+ if sys.platform.startswith('win'):
+ ie_path = os.path.join('Internet Explorer', 'iexplore.exe')
+ win_search_paths = {'32' : os.getenv('PROGRAMFILES(X86)'),
+ '64' : os.getenv('PROGRAMFILES')}
chrisgao (Use stgao instead) 2013/07/26 16:58:00 According to https://code.google.com/p/selenium/wi
tonyg 2013/07/26 18:21:07 There is also code in desktop_browser_finder.py th
chrisgao (Use stgao instead) 2013/07/30 02:06:49 I'm afraid we can't share much of the code, becaus
+
+ for bit, path in win_search_paths.iteritems():
tonyg 2013/07/26 18:21:07 s/bit/architecture/
chrisgao (Use stgao instead) 2013/07/30 02:06:49 Done.
+ if not path:
+ continue
+ if os.path.exists(os.path.join(path, ie_path)):
+ browsers.append(
+ PossibleIEDesktopBrowser('webdriver.ie%s' % bit, options, bit))
+
+ return browsers

Powered by Google App Engine
This is Rietveld 408576698