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

Unified Diff: chrome/test/webdriver/test/chromedriver_tests.py

Issue 8806030: Add commands to Chrome WebDriver for installing and manipulating extensions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: ... Created 9 years 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: 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)

Powered by Google App Engine
This is Rietveld 408576698