javascript - 如何克服 Selenium CSS parent only CSS 选择器限制

标签 javascript html css testing selenium

在 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/

相关文章:

CSS高亮表格行列无效

html - 如何使用 CSS 更改第一个元素的样式

javascript - 需要用 MomentJS 显示 AM/PM

javascript - 在 JavaScript 中使用嵌套等待

javascript - Alpinejs : change values inside children from parent element

jquery - 如何在单击按钮时选择网格中选中复选框的行?

javascript - 如何使用填充滚动到元素的顶部?

javascript - 输入 onChange w/React & TypeScript 错误 : jsx no-lambda no-bind

javascript - 在右边隐藏可变宽度元素

css - 我无法将 SCSS 更改为 CSS