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.""" |