0

RSpec と Capybara を使用して、クラス「foo」を持つ div 内の要素の存在をテストします。

<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 はわかりません。また、要素は 1 つの 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")]]')

xpath の代わりに css を使用してこれを行うには、おそらくもう少し簡単な方法がありますが、このタイプの状況ではこれが機能することがわかりました。(注: このコードは実際にはテストしていません。)

于 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 に答える