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

Unified Diff: chrome/test/chromedriver/test/run_py_tests.py

Issue 1196663005: [chromedriver] When launching a Chrome App, automatically switch to the new window. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: add copyright message to test app background.js Created 5 years, 6 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
« no previous file with comments | « chrome/test/chromedriver/session_commands.cc ('k') | chrome/test/data/chromedriver/test_app/background.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/test/chromedriver/test/run_py_tests.py
diff --git a/chrome/test/chromedriver/test/run_py_tests.py b/chrome/test/chromedriver/test/run_py_tests.py
index 9d9258e4a206d53a0c0ee8e8a77ba1a023ecef4b..e34b1f24b2f6e7ddb5dbaa13e87bfbc509a1c29b 100755
--- a/chrome/test/chromedriver/test/run_py_tests.py
+++ b/chrome/test/chromedriver/test/run_py_tests.py
@@ -237,6 +237,25 @@ class ChromeDriverBaseTest(unittest.TestCase):
self._drivers += [driver]
return driver
+ def WaitForNewWindow(self, driver, old_handles):
+ """Wait for at least one new window to show up in 20 seconds.
+
+ Args:
+ old_handles: Handles to all old windows before the new window is added.
+
+ Returns:
+ Handle to a new window. None if timeout.
+ """
+ deadline = time.time() + 20
+ while time.time() < deadline:
+ new_handles = driver.GetWindowHandles()
+ if len(new_handles) > len(old_handles):
+ for index, old_handle in enumerate(old_handles):
+ self.assertEquals(old_handle, new_handles[index])
+ return new_handles[len(old_handles)]
+ time.sleep(0.01)
+ return None
+
class ChromeDriverTest(ChromeDriverBaseTest):
"""End to end tests for ChromeDriver."""
@@ -276,30 +295,11 @@ class ChromeDriverTest(ChromeDriverBaseTest):
def testGetCurrentWindowHandle(self):
self._driver.GetCurrentWindowHandle()
- def _WaitForNewWindow(self, old_handles):
- """Wait for at least one new window to show up in 20 seconds.
-
- Args:
- old_handles: Handles to all old windows before the new window is added.
-
- Returns:
- Handle to a new window. None if timeout.
- """
- deadline = time.time() + 20
- while time.time() < deadline:
- new_handles = self._driver.GetWindowHandles()
- if len(new_handles) > len(old_handles):
- for index, old_handle in enumerate(old_handles):
- self.assertEquals(old_handle, new_handles[index])
- return new_handles[len(old_handles)]
- time.sleep(0.01)
- return None
-
def testCloseWindow(self):
self._driver.Load(self.GetHttpUrlForFile('/chromedriver/page_test.html'))
old_handles = self._driver.GetWindowHandles()
self._driver.FindElement('id', 'link').Click()
- new_window_handle = self._WaitForNewWindow(old_handles)
+ new_window_handle = self.WaitForNewWindow(driver, old_handles)
self.assertNotEqual(None, new_window_handle)
self._driver.SwitchToWindow(new_window_handle)
self.assertEquals(new_window_handle, self._driver.GetCurrentWindowHandle())
@@ -320,7 +320,7 @@ class ChromeDriverTest(ChromeDriverBaseTest):
self._driver.Load(self.GetHttpUrlForFile('/chromedriver/page_test.html'))
old_handles = self._driver.GetWindowHandles()
self._driver.FindElement('id', 'link').Click()
- self.assertNotEqual(None, self._WaitForNewWindow(old_handles))
+ self.assertNotEqual(None, WaitForNewWindow(driver, old_handles))
def testSwitchToWindow(self):
self._driver.Load(self.GetHttpUrlForFile('/chromedriver/page_test.html'))
@@ -329,7 +329,7 @@ class ChromeDriverTest(ChromeDriverBaseTest):
window1_handle = self._driver.GetCurrentWindowHandle()
old_handles = self._driver.GetWindowHandles()
self._driver.FindElement('id', 'link').Click()
- new_window_handle = self._WaitForNewWindow(old_handles)
+ new_window_handle = WaitForNewWindow(driver, old_handles)
self.assertNotEqual(None, new_window_handle)
self._driver.SwitchToWindow(new_window_handle)
self.assertEquals(new_window_handle, self._driver.GetCurrentWindowHandle())
@@ -644,7 +644,7 @@ class ChromeDriverTest(ChromeDriverBaseTest):
self._driver.Load(self._http_server.GetUrl() + '/newwindow')
old_windows = self._driver.GetWindowHandles()
self._driver.FindElement('tagName', 'a').Click()
- new_window = self._WaitForNewWindow(old_windows)
+ new_window = self.WaitForNewWindow(driver, old_windows)
self.assertNotEqual(None, new_window)
self.assertFalse(self._driver.IsLoading())
@@ -657,7 +657,7 @@ class ChromeDriverTest(ChromeDriverBaseTest):
self._driver.Load(self.GetHttpUrlForFile('/chromedriver/empty.html'))
old_handles = self._driver.GetWindowHandles()
self._driver.ExecuteScript('window.open("about:blank")')
- new_window_handle = self._WaitForNewWindow(old_handles)
+ new_window_handle = WaitForNewWindow(driver, old_handles)
self.assertNotEqual(None, new_window_handle)
def testNoSuchFrame(self):
@@ -1085,7 +1085,7 @@ class ChromeDriverTest(ChromeDriverBaseTest):
old_handles = self._driver.GetWindowHandles()
self.assertEquals(1, len(old_handles))
self._driver.ExecuteScript('setTimeout(function(){window.print();}, 0);')
- new_window_handle = self._WaitForNewWindow(old_handles)
+ new_window_handle = WaitForNewWindow(driver, old_handles)
self.assertNotEqual(None, new_window_handle)
self._driver.SwitchToWindow(new_window_handle)
self.assertEquals('chrome://print/', self._driver.GetCurrentUrl())
@@ -1239,6 +1239,19 @@ class ChromeExtensionsCapabilityTest(ChromeDriverBaseTest):
chrome_extensions=[self._PackExtension(crx)])
self.assertTrue(did_load_event.is_set())
+ def testCanLaunchApp(self):
+ app_path = os.path.join(_TEST_DATA_DIR, 'test_app')
+ driver = self.CreateDriver(chrome_switches=['load-extension=%s' % app_path])
+ old_handles = driver.GetWindowHandles()
+ self.assertEqual(1, len(old_handles))
+ driver.LaunchApp('gegjcdcfeiojglhifpmibkadodekakpc')
+ new_window_handle = self.WaitForNewWindow(driver, old_handles)
+ current_window_handle = driver.GetCurrentWindowHandle()
+ self.assertEqual(new_window_handle, current_window_handle,
+ "focus should switch to the window that the app launches in")
+ body_element = driver.FindElement('tag name', 'body')
+ self.assertEqual('It works!', body_element.GetText())
+
class ChromeLogPathCapabilityTest(ChromeDriverBaseTest):
"""Tests that chromedriver properly processes chromeOptions.logPath."""
« no previous file with comments | « chrome/test/chromedriver/session_commands.cc ('k') | chrome/test/data/chromedriver/test_app/background.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698