如何从多个CSS选择器中选择使用水豚

问题描述:

使用RSpec和水豚测试div中类的'foo'是否存在。如何从多个CSS选择器中选择使用水豚

<div class="foo"> 
    <p>Text zzz</p> 
    Looking for element here 
</div> 
<div class="foo"> 
    <p>Text aaa</p> 
    Element should not exist within this div. 
</div> 

有很多的div类网页上“富”,我可以根据Foo的数据库中的ID给他们不同的ID。

但我不知道测试中的foo的ID。而且,我不想测试div的父项,因为一个元素应该存在于一个div中,并且不存在于另一个div中。

在这种情况下测试元素的最佳方法是什么?

+0

从你措辞的问题的方式,有没有办法来确定在哪个元素的含量应。你说你在测试环境中没有foo的id,但是你有什么? – 2012-08-16 00:52:52

+0

更新了更多信息。 – 2012-08-16 00:55:35

parent = find("p[text()='zzz']").find(:xpath,"..") 
within parent do 
    ... 

https://github.com/jnicklas/capybara/pull/505

如果我理解正确的问题(我不是100%的信心我),我认为这应该工作:

el1 = find(:xpath, '//div[@class="foo"][./p[contains(.,"Text zzz")]]') 
el2 = find(:xpath, '//div[@class="foo"][./p[contains(.,"Text aaa")]]') 

有可能是一个稍微简单的做到这一点使用CSS代替的XPath的方式,但我发现这适用于这种情况。 (注:我并没有实际测试此代码。)