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