【发布时间】:2016-10-30 00:40:13
【问题描述】:
尝试在 chrome 浏览器 (V51) 的 JS 控制台上使用以下代码访问 https://shop.polymer-project.org/ 中男士外套部分下的“立即购买”按钮:
document.querySelector('shop-app').shadowRoot.querySelector('shop-home').shadowRoot.querySelector('shop-button');
我尝试使用 selenium 在自动化测试中访问相同的元素,
第 1 行:WebElement shopBtn = (WebElement)((JavascriptExecutor)driver).executeScript("return document.querySelector('shop-app').shadowRoot.querySelector('shop-home').shadowRoot.querySelector('shop-button')");
第 2 行:shopBtn.click();
此代码给出错误:
Exception in thread "main" org.openqa.selenium.WebDriverException: unknown error: Cannot read property 'querySelector' of null
(Session info: chrome=51.0.2704.106)
(Driver info: chromedriver=2.20.353124 (035346203162d32c80f1dce587c8154a1efa0c3b),platform=Mac OS X 10.11.3 x86_64).
非常感谢您在这方面的任何帮助。
【问题讨论】:
-
你应该使用Polymer's DOM api
-
您是在原生支持它的浏览器(Chrome)上使用 shady DOM(默认)还是 shadow DOM?
-
我正在使用 Chrome,因为它本机支持 Shadow DOM。由于 Polyfills,它在 Firefox 浏览器上非常容易运行,但在 Chrome 上却不行,尽管相同的代码在 Chrome 浏览器的 JS 控制台上运行良好。
标签: javascript selenium polymer shadow-dom