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

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

Issue 480483002: [chromedriver] Add shadow DOM support to chromedriver. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: "Fixed nits found in review" Created 6 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
« 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 7d8e74b4e54e5dbe9d5cc58a5a22a70e09027c24..b2f185bfb47492a87673edb264b1c6fc7b370d5e 100755
--- a/chrome/test/chromedriver/test/run_py_tests.py
+++ b/chrome/test/chromedriver/test/run_py_tests.py
@@ -745,6 +745,96 @@ class ChromeDriverTest(ChromeDriverBaseTest):
lots_of_data = self._driver.ExecuteScript(script)
self.assertEquals('0'.zfill(int(10e6)), lots_of_data)
+ 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 onClicked 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