| OLD | NEW |
| 1 # Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 """Tests for ChromeDriver. | 5 """Tests for ChromeDriver. |
| 6 | 6 |
| 7 If your test is testing a specific part of the WebDriver API, consider adding | 7 If your test is testing a specific part of the WebDriver API, consider adding |
| 8 it to the appropriate place in the WebDriver tree instead. | 8 it to the appropriate place in the WebDriver tree instead. |
| 9 """ | 9 """ |
| 10 | 10 |
| (...skipping 19 matching lines...) Expand all Loading... |
| 30 from chromedriver_test import ChromeDriverTest | 30 from chromedriver_test import ChromeDriverTest |
| 31 import test_paths | 31 import test_paths |
| 32 import util | 32 import util |
| 33 | 33 |
| 34 try: | 34 try: |
| 35 import simplejson as json | 35 import simplejson as json |
| 36 except ImportError: | 36 except ImportError: |
| 37 import json | 37 import json |
| 38 | 38 |
| 39 from selenium.common.exceptions import WebDriverException | 39 from selenium.common.exceptions import WebDriverException |
| 40 from selenium.webdriver.common.keys import Keys |
| 41 from selenium.webdriver.common.desired_capabilities import DesiredCapabilities |
| 40 from selenium.webdriver.remote.command import Command | 42 from selenium.webdriver.remote.command import Command |
| 41 from selenium.webdriver.remote.webdriver import WebDriver | 43 from selenium.webdriver.remote.webdriver import WebDriver |
| 42 from selenium.webdriver.common.keys import Keys | 44 from selenium.webdriver.support.ui import WebDriverWait |
| 43 from selenium.webdriver.common.desired_capabilities import DesiredCapabilities | |
| 44 | 45 |
| 45 | 46 |
| 46 class Request(urllib2.Request): | 47 class Request(urllib2.Request): |
| 47 """Extends urllib2.Request to support all HTTP request types.""" | 48 """Extends urllib2.Request to support all HTTP request types.""" |
| 48 | 49 |
| 49 def __init__(self, url, method=None, data=None): | 50 def __init__(self, url, method=None, data=None): |
| 50 """Initialise a new HTTP request. | 51 """Initialise a new HTTP request. |
| 51 | 52 |
| 52 Arguments: | 53 Arguments: |
| 53 url: The full URL to send the request to. | 54 url: The full URL to send the request to. |
| (...skipping 690 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 744 driver = self.GetNewDriver({'chrome.switches': ['disable-popup-blocking']}) | 745 driver = self.GetNewDriver({'chrome.switches': ['disable-popup-blocking']}) |
| 745 driver.get(self.GetTestDataUrl() + '/test_page.html') | 746 driver.get(self.GetTestDataUrl() + '/test_page.html') |
| 746 driver.execute_script('window.open("about:blank")') | 747 driver.execute_script('window.open("about:blank")') |
| 747 driver.close() | 748 driver.close() |
| 748 self.assertRaises(WebDriverException, driver.close) | 749 self.assertRaises(WebDriverException, driver.close) |
| 749 | 750 |
| 750 def testSwitchFromClosedWindow(self): | 751 def testSwitchFromClosedWindow(self): |
| 751 driver = self.GetNewDriver({'chrome.switches': ['disable-popup-blocking']}) | 752 driver = self.GetNewDriver({'chrome.switches': ['disable-popup-blocking']}) |
| 752 driver.get(self.GetTestDataUrl() + '/test_page.html') | 753 driver.get(self.GetTestDataUrl() + '/test_page.html') |
| 753 driver.execute_script('window.open("about:blank")') | 754 driver.execute_script('window.open("about:blank")') |
| 755 old_window = driver.current_window_handle |
| 754 driver.close() | 756 driver.close() |
| 757 WebDriverWait(driver, 10).until( |
| 758 lambda x: old_window not in driver.window_handles) |
| 755 driver.switch_to_window(driver.window_handles[0]) | 759 driver.switch_to_window(driver.window_handles[0]) |
| 756 self.assertEquals('about:blank', driver.current_url) | 760 self.assertEquals('about:blank', driver.current_url) |
| 757 | 761 |
| 758 def testSwitchToWindowWhileInSubframe(self): | 762 def testSwitchToWindowWhileInSubframe(self): |
| 759 driver = self.GetNewDriver({'chrome.switches': ['disable-popup-blocking']}) | 763 driver = self.GetNewDriver({'chrome.switches': ['disable-popup-blocking']}) |
| 760 driver.get(self.GetTestDataUrl() + '/test_page.html') | 764 driver.get(self.GetTestDataUrl() + '/test_page.html') |
| 761 driver.execute_script('window.open("about:blank")') | 765 driver.execute_script('window.open("about:blank")') |
| 762 driver.switch_to_frame(0) | 766 driver.switch_to_frame(0) |
| 763 driver.switch_to_window(driver.window_handles[1]) | 767 driver.switch_to_window(driver.window_handles[1]) |
| 764 self.assertEquals('about:blank', driver.current_url) | 768 self.assertEquals('about:blank', driver.current_url) |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 815 self.assertRaises(WebDriverException, driver.back) | 819 self.assertRaises(WebDriverException, driver.back) |
| 816 self.assertRaises(WebDriverException, driver.forward) | 820 self.assertRaises(WebDriverException, driver.forward) |
| 817 self.assertRaises(WebDriverException, driver.get_screenshot_as_base64) | 821 self.assertRaises(WebDriverException, driver.get_screenshot_as_base64) |
| 818 | 822 |
| 819 def testCanHandleAlertInSubframe(self): | 823 def testCanHandleAlertInSubframe(self): |
| 820 driver = self.GetNewDriver() | 824 driver = self.GetNewDriver() |
| 821 driver.get(self.GetTestDataUrl() + '/alerts.html') | 825 driver.get(self.GetTestDataUrl() + '/alerts.html') |
| 822 driver.switch_to_frame('subframe') | 826 driver.switch_to_frame('subframe') |
| 823 driver.execute_async_script('arguments[0](); window.alert("ok")') | 827 driver.execute_async_script('arguments[0](); window.alert("ok")') |
| 824 driver.switch_to_alert().accept() | 828 driver.switch_to_alert().accept() |
| 829 |
| 830 class ExtensionTest(ChromeDriverTest): |
| 831 |
| 832 INFOBAR_BROWSER_ACTION_EXTENSION = test_paths.TEST_DATA_PATH + \ |
| 833 '/infobar_browser_action_extension' |
| 834 PAGE_ACTION_EXTENSION = test_paths.TEST_DATA_PATH + \ |
| 835 '/page_action_extension' |
| 836 |
| 837 def testExtensionInstallAndUninstall(self): |
| 838 driver = self.GetNewDriver() |
| 839 self.assertEquals(0, len(driver.get_installed_extensions())) |
| 840 ext = driver.install_extension(self.PAGE_ACTION_EXTENSION) |
| 841 extensions = driver.get_installed_extensions() |
| 842 self.assertEquals(1, len(extensions)) |
| 843 self.assertEquals(ext.id, extensions[0].id) |
| 844 ext.uninstall() |
| 845 self.assertEquals(0, len(driver.get_installed_extensions())) |
| 846 |
| 847 def testExtensionInfo(self): |
| 848 driver = self.GetNewDriver() |
| 849 ext = driver.install_extension(self.PAGE_ACTION_EXTENSION) |
| 850 self.assertEquals('Page action extension', ext.get_name()) |
| 851 self.assertEquals('1.0', ext.get_version()) |
| 852 self.assertEquals(32, len(ext.id)) |
| 853 self.assertTrue(ext.is_enabled()) |
| 854 ext.set_enabled(True) |
| 855 ext.set_enabled(False) |
| 856 self.assertFalse(ext.is_enabled()) |
| 857 ext.set_enabled(True) |
| 858 self.assertTrue(ext.is_enabled()) |
| 859 |
| 860 def _testExtensionView(self, driver, view_handle, extension): |
| 861 """Tests that the given view supports basic WebDriver functionality.""" |
| 862 driver.switch_to_window(view_handle) |
| 863 self.assertTrue(driver.execute_script('return true')) |
| 864 checkbox = driver.find_element_by_id('checkbox') |
| 865 checkbox.click() |
| 866 self.assertTrue(checkbox.is_selected()) |
| 867 textfield = driver.find_element_by_id('textfield') |
| 868 textfield.send_keys('test') |
| 869 self.assertEquals('test', textfield.get_attribute('value')) |
| 870 self.assertEquals('test', driver.title) |
| 871 self.assertTrue(driver.current_url.endswith('view_checks.html')) |
| 872 self.assertTrue('shouldBeInPageSource' in driver.page_source) |
| 873 driver.close() |
| 874 def is_view_closed(driver): |
| 875 return len(filter(lambda view: view['handle'] == view_handle, |
| 876 extension._get_views())) == 0 |
| 877 WebDriverWait(driver, 10).until(is_view_closed) |
| 878 |
| 879 def testInfobarView(self): |
| 880 driver = self.GetNewDriver({'chrome.switches': |
| 881 ['enable-experimental-extension-apis']}) |
| 882 ext = driver.install_extension(self.INFOBAR_BROWSER_ACTION_EXTENSION) |
| 883 driver.switch_to_window(ext.get_bg_page_handle()) |
| 884 driver.set_script_timeout(10) |
| 885 driver.execute_async_script('waitForInfobar(arguments[0])') |
| 886 self._testExtensionView(driver, ext.get_infobar_handles()[0], ext) |
| 887 |
| 888 def testBrowserActionPopupView(self): |
| 889 driver = self.GetNewDriver({'chrome.switches': |
| 890 ['enable-experimental-extension-apis']}) |
| 891 ext = driver.install_extension(self.INFOBAR_BROWSER_ACTION_EXTENSION) |
| 892 ext.click_browser_action() |
| 893 self._testExtensionView(driver, ext.get_popup_handle(), ext) |
| 894 |
| 895 def testPageActionPopupView(self): |
| 896 driver = self.GetNewDriver() |
| 897 ext = driver.install_extension(self.PAGE_ACTION_EXTENSION) |
| 898 def is_page_action_visible(driver): |
| 899 return ext.is_page_action_visible() |
| 900 WebDriverWait(driver, 10).until(is_page_action_visible) |
| 901 ext.click_page_action() |
| 902 self._testExtensionView(driver, ext.get_popup_handle(), ext) |
| OLD | NEW |