在 Selenium 中是否有一个已知的解决方案来实现像这样的 CSS 选择器?
$('.sss').find('>div.ui-collapsible-content')
在 Chrome 开发者工具上运行良好。
在 Selnenium 中它抛出异常
OpenQA.Selenium.InvalidElementStateException : invalid element state: Failed to execute 'querySelector' on 'Element': '>div.ui-collapsible-content' is not a valid selector.
(Session info: chrome=33.0.1750.154)
(Driver info: chromedriver=2.8.241075,platform=Windows NT 6.1 SP1 x86)
我可以只使用没有父部分的选择器
.find('div.ui-collapsible-content')
并且只取第一个元素,但这是一个有点 hacky 的解决方案,现在肯定有人遇到过类似的情况并找到了比这更优雅的解决方案。
jsfiddle HTML 示例 - http://jsfiddle.net/uHYZL/1/
最佳答案
我不认为这是一个限制。这对我来说看起来像是预期的行为,因为我没有看到 >div.ui-collapsible-content
是有效的 CSS selector首先。
$('.sss').find('>div.ui-collapsible-content')
起作用的原因是因为您使用的是 jQuery,它使用 Sizzle作为引擎盖下的 CSS 选择引擎。它支持 W3C 规范不支持的东西,比如 :contains()
等。
我不确定您要在这里实现什么。像下面这样的东西不适合您的需要吗?
var content = driver.FindElement(By.CssSelector(".sss > div.ui-collapsible-content"));
关于javascript - 如何克服 Selenium CSS parent only CSS 选择器限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23287758/