Commit dea291aa authored by samuong's avatar samuong Committed by Commit bot

[chromedriver] Use nodeType instead of instanceof.

For some reason, some pages redefine window.Element, which breaks our previous
use of instanceof.

BUG=chromedriver:1388

Review-Url: https://codereview.chromium.org/2620803002
Cr-Commit-Position: refs/heads/master@{#443405}
parent 2135a640
......@@ -260,7 +260,8 @@ function wrap(value) {
// frames[0].document.body instanceof Object == false even though
// typeof(frames[0].document.body) == 'object'.
if ((typeof(value) == 'object' && value != null) ||
(typeof(value) == 'function' && value instanceof Element)) {
(typeof(value) == 'function' && value.nodeName &&
value.nodeType == Node.ELEMENT_NODE)) {
var nodeType = value['nodeType'];
if (nodeType == NodeType.ELEMENT || nodeType == NodeType.DOCUMENT
|| (SHADOW_DOM_ENABLED && value instanceof ShadowRoot)) {
......
......@@ -1378,6 +1378,13 @@ class ChromeDriverTest(ChromeDriverBaseTestWithWebServer):
if (self._driver.w3c_compliant):
self.assertEquals(len(element._id), w3c_id_length)
def testFindElementWhenElementIsOverridden(self):
self._driver.Load('about:blank')
self._driver.ExecuteScript(
'document.body.appendChild(document.createElement("a"));')
self._driver.ExecuteScript('window.Element = {}')
self.assertEquals(1, len(self._driver.FindElements('tag name', 'a')))
class ChromeDriverPageLoadTimeoutTest(ChromeDriverBaseTestWithWebServer):
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment