| Index: chrome/test/webdriver/test/chromedriver_tests.py
|
| diff --git a/chrome/test/webdriver/test/chromedriver_tests.py b/chrome/test/webdriver/test/chromedriver_tests.py
|
| index 175c20bb0a2ff54657abbc4ec774f95181974226..3c88782f6255ddc3742748dcb0c14fffb6690bb4 100644
|
| --- a/chrome/test/webdriver/test/chromedriver_tests.py
|
| +++ b/chrome/test/webdriver/test/chromedriver_tests.py
|
| @@ -37,10 +37,11 @@ except ImportError:
|
| import json
|
|
|
| from selenium.common.exceptions import WebDriverException
|
| -from selenium.webdriver.remote.command import Command
|
| -from selenium.webdriver.remote.webdriver import WebDriver
|
| from selenium.webdriver.common.keys import Keys
|
| from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
|
| +from selenium.webdriver.remote.command import Command
|
| +from selenium.webdriver.remote.webdriver import WebDriver
|
| +from selenium.webdriver.support.ui import WebDriverWait
|
|
|
|
|
| class Request(urllib2.Request):
|
| @@ -751,7 +752,10 @@ class FrameSwitchingTest(ChromeDriverTest):
|
| driver = self.GetNewDriver({'chrome.switches': ['disable-popup-blocking']})
|
| driver.get(self.GetTestDataUrl() + '/test_page.html')
|
| driver.execute_script('window.open("about:blank")')
|
| + old_window = driver.current_window_handle
|
| driver.close()
|
| + WebDriverWait(driver, 10).until(
|
| + lambda x: old_window not in driver.window_handles)
|
| driver.switch_to_window(driver.window_handles[0])
|
| self.assertEquals('about:blank', driver.current_url)
|
|
|
| @@ -822,3 +826,77 @@ class AlertTest(ChromeDriverTest):
|
| driver.switch_to_frame('subframe')
|
| driver.execute_async_script('arguments[0](); window.alert("ok")')
|
| driver.switch_to_alert().accept()
|
| +
|
| +class ExtensionTest(ChromeDriverTest):
|
| +
|
| + INFOBAR_BROWSER_ACTION_EXTENSION = test_paths.TEST_DATA_PATH + \
|
| + '/infobar_browser_action_extension'
|
| + PAGE_ACTION_EXTENSION = test_paths.TEST_DATA_PATH + \
|
| + '/page_action_extension'
|
| +
|
| + def testExtensionInstallAndUninstall(self):
|
| + driver = self.GetNewDriver()
|
| + self.assertEquals(0, len(driver.get_installed_extensions()))
|
| + ext = driver.install_extension(self.PAGE_ACTION_EXTENSION)
|
| + extensions = driver.get_installed_extensions()
|
| + self.assertEquals(1, len(extensions))
|
| + self.assertEquals(ext.id, extensions[0].id)
|
| + ext.uninstall()
|
| + self.assertEquals(0, len(driver.get_installed_extensions()))
|
| +
|
| + def testExtensionInfo(self):
|
| + driver = self.GetNewDriver()
|
| + ext = driver.install_extension(self.PAGE_ACTION_EXTENSION)
|
| + self.assertEquals('Page action extension', ext.get_name())
|
| + self.assertEquals('1.0', ext.get_version())
|
| + self.assertEquals(32, len(ext.id))
|
| + self.assertTrue(ext.is_enabled())
|
| + ext.set_enabled(True)
|
| + ext.set_enabled(False)
|
| + self.assertFalse(ext.is_enabled())
|
| + ext.set_enabled(True)
|
| + self.assertTrue(ext.is_enabled())
|
| +
|
| + def _testExtensionView(self, driver, view_handle, extension):
|
| + """Tests that the given view supports basic WebDriver functionality."""
|
| + driver.switch_to_window(view_handle)
|
| + self.assertTrue(driver.execute_script('return true'))
|
| + checkbox = driver.find_element_by_id('checkbox')
|
| + checkbox.click()
|
| + self.assertTrue(checkbox.is_selected())
|
| + textfield = driver.find_element_by_id('textfield')
|
| + textfield.send_keys('test')
|
| + self.assertEquals('test', textfield.get_attribute('value'))
|
| + self.assertEquals('test', driver.title)
|
| + self.assertTrue(driver.current_url.endswith('view_checks.html'))
|
| + self.assertTrue('shouldBeInPageSource' in driver.page_source)
|
| + driver.close()
|
| + def is_view_closed(driver):
|
| + return len(filter(lambda view: view['handle'] == view_handle,
|
| + extension._get_views())) == 0
|
| + WebDriverWait(driver, 10).until(is_view_closed)
|
| +
|
| + def testInfobarView(self):
|
| + driver = self.GetNewDriver({'chrome.switches':
|
| + ['enable-experimental-extension-apis']})
|
| + ext = driver.install_extension(self.INFOBAR_BROWSER_ACTION_EXTENSION)
|
| + driver.switch_to_window(ext.get_bg_page_handle())
|
| + driver.set_script_timeout(10)
|
| + driver.execute_async_script('waitForInfobar(arguments[0])')
|
| + self._testExtensionView(driver, ext.get_infobar_handles()[0], ext)
|
| +
|
| + def testBrowserActionPopupView(self):
|
| + driver = self.GetNewDriver({'chrome.switches':
|
| + ['enable-experimental-extension-apis']})
|
| + ext = driver.install_extension(self.INFOBAR_BROWSER_ACTION_EXTENSION)
|
| + ext.click_browser_action()
|
| + self._testExtensionView(driver, ext.get_popup_handle(), ext)
|
| +
|
| + def testPageActionPopupView(self):
|
| + driver = self.GetNewDriver()
|
| + ext = driver.install_extension(self.PAGE_ACTION_EXTENSION)
|
| + def is_page_action_visible(driver):
|
| + return ext.is_page_action_visible()
|
| + WebDriverWait(driver, 10).until(is_page_action_visible)
|
| + ext.click_page_action()
|
| + self._testExtensionView(driver, ext.get_popup_handle(), ext)
|
|
|