如何克服Selenium CSS父级CSS选择器限制

时间:2014-04-25 08:16:34

标签: javascript html css testing selenium

在Selenium中有没有像CSS这样的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/

2 个答案:

答案 0 :(得分:2)

我不会称之为限制。这看起来像我预期的行为,因为我首先看不到>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"));

答案 1 :(得分:0)

您是否尝试过使用Xpath?它看起来非常可怕和复杂,但我相信你可以构建一个只能找到父母的选择器,然后从那里继续。

我会尝试构建一个但目前无法访问计算机