Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何克服Selenium CSS仅限父级CSS选择器的限制_Javascript_Html_Css_Testing_Selenium - Fatal编程技术网

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

Javascript 如何克服Selenium CSS仅限父级CSS选择器的限制,javascript,html,css,testing,selenium,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': '>di

在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')
只考虑第一个元素,但这是一个有点粗糙的解决方案,到目前为止,一定有人遇到过类似的情况,找到了比这个更优雅的解决方案


JSFIDLE HTML示例-

我不认为这是一个限制。这看起来像是我期望的行为,因为我认为div.ui-collapsable-content首先不是有效的

之所以
$('.sss').find('>div.ui-collapsable-content')
起作用,是因为您使用的是jQuery,它在引擎盖下用作CSS选择引擎。它支持W3C规范不支持的东西,如
:contains()

我不确定你在这里想要实现什么。下面这样的东西不适合你吗

var content = driver.FindElement(By.CssSelector(".sss > div.ui-collapsible-content"));

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


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

我正在树结构中工作,所有具有.ui可折叠内容类的子级也被选中。@LIUFA:(我不经常使用jQuery,但是)我看不到
$('.sss')。查找('>div.ui-collapsable-content'))
”.sss>div.ui-collapsable-content“
。任何可用的演示?sss仅用于示例目的,但将元素本身包含到选择器中的解决方案有效,只需等待10分钟即可接受答案。谢谢。刚意识到不是:)我一直在选择子元素,建议对IWebElement使用IWebDriver.FindElement()。包含元素本身的FindElements()将选择页面上的多个元素,而包含父类的FindElements()将只选择子元素。我们将平铺一个。@LIUFA:演示可能会有帮助。我使用了
$('#问题小列表')。查找('>div.question-summary')
$('#问题小列表>div.question-summary')
用于StackOverflow,在我看来是一样的。