3

ドキュメントで特別なクラスを持つ n 番目の要素を見つけようとしています。要素は必ずしも同じ親の子であるとは限りません。たとえば

<ul>
  <li><div class="foo">This</div></li>
  <li><div>Nothing</div>
    <ul>
      <li><div class="foo">This also</div></li>
    </ul>
  </li>
  <li><div class="foo">And this</div><li>
</ul>

class を持つ最初、2 番目、または 3 番目の要素を見つけたいと思います.foo

私は試した

page.find '.foo'

どのエラーCapybara::Ambiguous: Ambiguous match, found 3 elements matching css ".foo"

私はそれから試しました

page.all('.foo')[n]

findHTML は実際には ajax データから生成されるため、Capybaras のようにこの短い時間を待たないように見えることを除けば、これはうまく機能します。では、find でこれを正しく行うにはどうすればよいでしょうか。

4

2 に答える 2

1

freenode の #RubyOnRails で短いチャットをした後、これは最初に思ったほど簡単ではないことが明らかになりました。.foo問題は、既にページに挿入されている が「すべて」であるかどうかを Capybara が認識できないことです。.allそれが、持っているような待機のサポートがない (または必要ない)理由.findです。

解決策は、適切な時間だけ手動で待機してから、 を使用すること.allです。

于 2013-04-11T09:09:23.153 に答える