我想用非Shadow-DOM支持的浏览器(如Firefox,PhantomJS以及使用WebDriver的其他浏览器)测试Polymer应用程序。 Firefox和PhantomJS webdriver的命令时,我使用类似如何正确地将阴影DOM CSS选择器转换为非阴影DOM选择器
driver.findElement(const By.cssSelector('* /deep/ #some-div'));
是否有一些规则,如何最好地翻译失败/接近这些选择时,不能应用在polyfills:
/deep/
::shadow
:host()
:host-context()
:content
我想创建一个自动非阴影DOM选择这样的转换对于选择不发送请求之前支持他们的浏览器,并为我需要知道如何给一个函数翻译他们。
试图删除'/ deep /'和':: shadow'在Chrome和Firefox中都能正常工作,但Safari(我认为是IE)在我身上爆炸了。你是否能够始终如一地工作? – Indolering
我不知道为什么这在Chrome中适合你,它只能在没有影子DOM支持的浏览器中工作。我也在IE/Edge中遇到过这个问题(没有尝试Safari)。我的解决方法是递归调用'shadowRoot.querySelectorAll()'而不是'/ deep /'和':: shadow'。对我来说,它看起来像是因为IE(也可能是Safaru)已经启用了阴影DOM(但没有正式确认),但不支持在'querySelector'中的'/ deep /'和':: shadow'。 –
我错过了,我只是在Chrome中运行时禁用了'/ deep /'...所以该方案在Chrome和Firefox中运行。但是,此评论主题超出了SO的范围,请参阅[webdriver.io](https://github.com/webdriverio/webdriverio/issues/194)和[selenium](https://github.com/ SeleniumHQ/selenium/issues/1041)问题。 – Indolering