0

使用 RSpec 和 Capybara 测试 div 中是否存在具有类 'foo' 的元素。

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

页面上有很多类 'foo' 的 div,我可以根据 foo 在数据库中的 ID 给它们不同的 ID。

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

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

4

2 回答 2

2

如果我正确理解了这个问题(而且我不是 100% 有信心这样做),我认为这应该有效:

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

使用 css 而不是 xpath 可能有一种更简单的方法来执行此操作,但我发现这适用于这种情况。(注意:我还没有实际测试过这段代码。)

于 2012-08-16T01:11:26.830 回答
1
parent = find("p[text()='zzz']").find(:xpath,"..")
within parent do
  ...

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

于 2012-08-16T01:13:55.277 回答