OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright 2013 The Chromium Authors. All rights reserved. | 2 # Copyright 2013 The Chromium Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 """End to end tests for ChromeDriver.""" | 6 """End to end tests for ChromeDriver.""" |
7 | 7 |
8 import base64 | 8 import base64 |
9 import json | 9 import json |
10 import math | 10 import math |
(...skipping 727 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
738 self._driver.ExecuteScript('debugger;') | 738 self._driver.ExecuteScript('debugger;') |
739 | 739 |
740 def testMobileEmulationDisabledByDefault(self): | 740 def testMobileEmulationDisabledByDefault(self): |
741 self.assertFalse(self._driver.capabilities['mobileEmulationEnabled']) | 741 self.assertFalse(self._driver.capabilities['mobileEmulationEnabled']) |
742 | 742 |
743 def testChromeDriverSendLargeData(self): | 743 def testChromeDriverSendLargeData(self): |
744 script = 's = ""; for (i = 0; i < 10e6; i++) s += "0"; return s;' | 744 script = 's = ""; for (i = 0; i < 10e6; i++) s += "0"; return s;' |
745 lots_of_data = self._driver.ExecuteScript(script) | 745 lots_of_data = self._driver.ExecuteScript(script) |
746 self.assertEquals('0'.zfill(int(10e6)), lots_of_data) | 746 self.assertEquals('0'.zfill(int(10e6)), lots_of_data) |
747 | 747 |
748 def testShadowDomFindElementWithSlashDeep(self): | |
749 """Checks that chromedriver can find elements in a shadow DOM using /deep/ | |
750 css selectors.""" | |
751 self._driver.Load(self.GetHttpUrlForFile( | |
752 '/chromedriver/shadow_dom_test.html')) | |
753 self.assertTrue(self._driver.FindElement("css", "* /deep/ #olderTextBox")) | |
754 | |
755 def testShadowDomFindChildElement(self): | |
756 """Checks that chromedriver can find child elements from a shadow DOM | |
757 element.""" | |
758 self._driver.Load(self.GetHttpUrlForFile( | |
759 '/chromedriver/shadow_dom_test.html')) | |
760 elem = self._driver.FindElement("css", "* /deep/ #olderChildDiv") | |
761 self.assertTrue(elem.FindElement("id", "olderTextBox")) | |
762 | |
763 def testShadowDomFindElementFailsFromRootWithoutSlashDeep(self): | |
764 """Checks that chromedriver can't find elements in a shadow DOM without | |
765 /deep/.""" | |
766 self._driver.Load(self.GetHttpUrlForFile( | |
767 '/chromedriver/shadow_dom_test.html')) | |
768 # can't find element from the root without /deep/ | |
769 with self.assertRaises(chromedriver.NoSuchElement): | |
770 self._driver.FindElement("id", "#olderTextBox") | |
771 | |
772 def testShadowDomFindElementFailsBetweenShadowRoots(self): | |
773 """Checks that chromedriver can't find elements in other shadow DOM | |
774 trees.""" | |
775 self._driver.Load(self.GetHttpUrlForFile( | |
776 '/chromedriver/shadow_dom_test.html')) | |
777 elem = self._driver.FindElement("css", "* /deep/ #youngerChildDiv") | |
778 with self.assertRaises(chromedriver.NoSuchElement): | |
779 elem.FindElement("id", "#olderTextBox") | |
780 | |
781 def testShadowDomText(self): | |
782 """Checks that chromedriver can find extract the text from a shadow DOM | |
783 element.""" | |
784 self._driver.Load(self.GetHttpUrlForFile( | |
785 '/chromedriver/shadow_dom_test.html')) | |
786 elem = self._driver.FindElement("css", "* /deep/ #olderHeading") | |
787 self.assertEqual("Older Child", elem.GetText()) | |
788 | |
789 def testShadowDomSendKeys(self): | |
790 """Checks that chromedriver can call SendKeys on a shadow DOM element.""" | |
791 self._driver.Load(self.GetHttpUrlForFile( | |
792 '/chromedriver/shadow_dom_test.html')) | |
793 elem = self._driver.FindElement("css", "* /deep/ #olderTextBox") | |
794 elem.SendKeys("bar") | |
795 self.assertEqual("foobar", self._driver.ExecuteScript( | |
796 'return document.querySelector("* /deep/ #olderTextBox").value;')) | |
797 | |
798 def testShadowDomClear(self): | |
799 """Checks that chromedriver can call Clear on a shadow DOM element.""" | |
800 self._driver.Load(self.GetHttpUrlForFile( | |
801 '/chromedriver/shadow_dom_test.html')) | |
802 elem = self._driver.FindElement("css", "* /deep/ #olderTextBox") | |
803 elem.Clear() | |
804 self.assertEqual("", self._driver.ExecuteScript( | |
805 'return document.querySelector("* /deep/ #olderTextBox").value;')) | |
806 | |
807 def testShadowDomClick(self): | |
808 """Checks that chromedriver can call Click on an element in a shadow DOM.""" | |
809 self._driver.Load(self.GetHttpUrlForFile( | |
810 '/chromedriver/shadow_dom_test.html')) | |
811 elem = self._driver.FindElement("css", "* /deep/ #olderButton") | |
812 elem.Click() | |
813 # the butotn's onClicked handler changes the text box's value | |
814 self.assertEqual("Button Was Clicked", self._driver.ExecuteScript( | |
815 'return document.querySelector("* /deep/ #olderTextBox").value;')) | |
816 | |
817 def testShadowDomStaleReference(self): | |
818 """Checks that trying to manipulate shadow DOM elements that are detached | |
819 from the document raises a StaleElementReference exception""" | |
820 self._driver.Load(self.GetHttpUrlForFile( | |
821 '/chromedriver/shadow_dom_test.html')) | |
822 elem = self._driver.FindElement("css", "* /deep/ #olderButton") | |
823 self._driver.ExecuteScript( | |
824 'document.querySelector("#outerDiv").innerHTML="<div/>";') | |
825 with self.assertRaises(chromedriver.StaleElementReference): | |
826 elem.Click() | |
827 | |
828 def testShadowDomDisplayed(self): | |
829 """Checks that trying to manipulate shadow DOM elements that are detached | |
830 from the document raises a StaleElementReference exception""" | |
831 self._driver.Load(self.GetHttpUrlForFile( | |
832 '/chromedriver/shadow_dom_test.html')) | |
833 elem = self._driver.FindElement("css", "* /deep/ #olderButton") | |
834 self.assertTrue(elem.IsDisplayed()) | |
835 self._driver.ExecuteScript( | |
836 'document.querySelector("#outerDiv").style.display="None";') | |
837 self.assertFalse(elem.IsDisplayed()) | |
838 | 748 |
839 class ChromeDriverAndroidTest(ChromeDriverBaseTest): | 749 class ChromeDriverAndroidTest(ChromeDriverBaseTest): |
840 """End to end tests for Android-specific tests.""" | 750 """End to end tests for Android-specific tests.""" |
841 | 751 |
842 def testLatestAndroidAppInstalled(self): | 752 def testLatestAndroidAppInstalled(self): |
843 if ('stable' not in _ANDROID_PACKAGE_KEY and | 753 if ('stable' not in _ANDROID_PACKAGE_KEY and |
844 'beta' not in _ANDROID_PACKAGE_KEY): | 754 'beta' not in _ANDROID_PACKAGE_KEY): |
845 return | 755 return |
846 | 756 |
847 self._driver = self.CreateDriver() | 757 self._driver = self.CreateDriver() |
(...skipping 539 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1387 | 1297 |
1388 all_tests_suite = unittest.defaultTestLoader.loadTestsFromModule( | 1298 all_tests_suite = unittest.defaultTestLoader.loadTestsFromModule( |
1389 sys.modules[__name__]) | 1299 sys.modules[__name__]) |
1390 tests = unittest_util.FilterTestSuite(all_tests_suite, options.filter) | 1300 tests = unittest_util.FilterTestSuite(all_tests_suite, options.filter) |
1391 ChromeDriverTest.GlobalSetUp() | 1301 ChromeDriverTest.GlobalSetUp() |
1392 MobileEmulationCapabilityTest.GlobalSetUp() | 1302 MobileEmulationCapabilityTest.GlobalSetUp() |
1393 result = unittest.TextTestRunner(stream=sys.stdout, verbosity=2).run(tests) | 1303 result = unittest.TextTestRunner(stream=sys.stdout, verbosity=2).run(tests) |
1394 ChromeDriverTest.GlobalTearDown() | 1304 ChromeDriverTest.GlobalTearDown() |
1395 MobileEmulationCapabilityTest.GlobalTearDown() | 1305 MobileEmulationCapabilityTest.GlobalTearDown() |
1396 sys.exit(len(result.failures) + len(result.errors)) | 1306 sys.exit(len(result.failures) + len(result.errors)) |
OLD | NEW |