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

Unified Diff: chrome/test/chromedriver/test/run_py_tests.py

Issue 529763002: Added shadow DOM support to chromedriver. atoms.cc and .h are generated from the selenium tree. I'l… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 4 months 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
« no previous file with comments | « chrome/test/chromedriver/js/focus.js ('k') | chrome/test/data/chromedriver/shadow_dom_test.html » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/test/chromedriver/test/run_py_tests.py
diff --git a/chrome/test/chromedriver/test/run_py_tests.py b/chrome/test/chromedriver/test/run_py_tests.py
index d8434411ca207c8e5d3c83b8c65d6f8800224ce4..36f74d8acedb9c3b25f870020aefbefa4d01270b 100755
--- a/chrome/test/chromedriver/test/run_py_tests.py
+++ b/chrome/test/chromedriver/test/run_py_tests.py
@@ -715,6 +715,98 @@ class ChromeDriverTest(ChromeDriverBaseTest):
def testMobileEmulationDisabledByDefault(self):
self.assertFalse(self._driver.capabilities['mobileEmulationEnabled'])
+ def testShadowDomFindElementWithSlashDeep(self):
+ """Checks that chromedriver can find elements in a shadow DOM using /deep/
+ css selectors."""
+ self._driver.Load(self.GetHttpUrlForFile(
+ '/chromedriver/shadow_dom_test.html'))
+ self.assertTrue(self._driver.FindElement("css", "* /deep/ #olderTextBox"))
+
+ def testShadowDomFindChildElement(self):
+ """Checks that chromedriver can find child elements from a shadow DOM
+ element."""
+ self._driver.Load(self.GetHttpUrlForFile(
+ '/chromedriver/shadow_dom_test.html'))
+ elem = self._driver.FindElement("css", "* /deep/ #olderChildDiv")
+ self.assertTrue(elem.FindElement("id", "olderTextBox"))
+
+ def testShadowDomFindElementFailsFromRootWithoutSlashDeep(self):
+ """Checks that chromedriver can't find elements in a shadow DOM without
+ /deep/."""
+ self._driver.Load(self.GetHttpUrlForFile(
+ '/chromedriver/shadow_dom_test.html'))
+ # can't find element from the root without /deep/
+ with self.assertRaises(chromedriver.NoSuchElement):
+ self._driver.FindElement("id", "#olderTextBox")
+
+ def testShadowDomFindElementFailsBetweenShadowRoots(self):
+ """Checks that chromedriver can't find elements in other shadow DOM
+ trees."""
+ self._driver.Load(self.GetHttpUrlForFile(
+ '/chromedriver/shadow_dom_test.html'))
+ elem = self._driver.FindElement("css", "* /deep/ #youngerChildDiv")
+ with self.assertRaises(chromedriver.NoSuchElement):
+ elem.FindElement("id", "#olderTextBox")
+
+ def testShadowDomText(self):
+ """Checks that chromedriver can find extract the text from a shadow DOM
+ element."""
+ self._driver.Load(self.GetHttpUrlForFile(
+ '/chromedriver/shadow_dom_test.html'))
+ elem = self._driver.FindElement("css", "* /deep/ #olderHeading")
+ self.assertEqual("Older Child", elem.GetText())
+
+ def testShadowDomSendKeys(self):
+ """Checks that chromedriver can call SendKeys on a shadow DOM element."""
+ self._driver.Load(self.GetHttpUrlForFile(
+ '/chromedriver/shadow_dom_test.html'))
+ elem = self._driver.FindElement("css", "* /deep/ #olderTextBox")
+ elem.SendKeys("bar")
+ self.assertEqual("foobar", self._driver.ExecuteScript(
+ 'return document.querySelector("* /deep/ #olderTextBox").value;'))
+
+ def testShadowDomClear(self):
+ """Checks that chromedriver can call Clear on a shadow DOM element."""
+ self._driver.Load(self.GetHttpUrlForFile(
+ '/chromedriver/shadow_dom_test.html'))
+ elem = self._driver.FindElement("css", "* /deep/ #olderTextBox")
+ elem.Clear()
+ self.assertEqual("", self._driver.ExecuteScript(
+ 'return document.querySelector("* /deep/ #olderTextBox").value;'))
+
+ def testShadowDomClick(self):
+ """Checks that chromedriver can call Click on an element in a shadow DOM."""
+ self._driver.Load(self.GetHttpUrlForFile(
+ '/chromedriver/shadow_dom_test.html'))
+ elem = self._driver.FindElement("css", "* /deep/ #olderButton")
+ elem.Click()
+ # the butotn's ohClicked handler changes the text box's value
+ self.assertEqual("Button Was Clicked", self._driver.ExecuteScript(
+ 'return document.querySelector("* /deep/ #olderTextBox").value;'))
+
+ def testShadowDomStaleReference(self):
+ """Checks that trying to manipulate shadow DOM elements that are detached
+ from the document raises a StaleElementReference exception"""
+ self._driver.Load(self.GetHttpUrlForFile(
+ '/chromedriver/shadow_dom_test.html'))
+ elem = self._driver.FindElement("css", "* /deep/ #olderButton")
+ self._driver.ExecuteScript(
+ 'document.querySelector("#outerDiv").innerHTML="<div/>";')
+ with self.assertRaises(chromedriver.StaleElementReference):
+ elem.Click()
+
+ def testShadowDomDisplayed(self):
+ """Checks that trying to manipulate shadow DOM elements that are detached
+ from the document raises a StaleElementReference exception"""
+ self._driver.Load(self.GetHttpUrlForFile(
+ '/chromedriver/shadow_dom_test.html'))
+ elem = self._driver.FindElement("css", "* /deep/ #olderButton")
+ self.assertTrue(elem.IsDisplayed())
+ self._driver.ExecuteScript(
+ 'document.querySelector("#outerDiv").style.display="None";')
+ self.assertFalse(elem.IsDisplayed())
+
+
class ChromeDriverAndroidTest(ChromeDriverBaseTest):
"""End to end tests for Android-specific tests."""
« no previous file with comments | « chrome/test/chromedriver/js/focus.js ('k') | chrome/test/data/chromedriver/shadow_dom_test.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698