web-dev-qa-db-ja.com

カピバラで最後に一致する要素を見つける方法は?

class_nameで検索して、すべての要素のうち最後の要素を返したいと思っていました。

Jqueryでは、以下のように書くことができますが、カピバラではうまくいかないようです

find(".delete:last")

webkitドライバを使用している場合は、次のように記述できます-

find(".delete:last-child")

カピバラでは、以下を使用して最後の要素を取得できます-

all(:css, ".delete").last

上記に代わるものはありますか?

38
Sandip Ransing

私は同じ問題を抱えており、カピバラ2.4でこの方法を使用してしまいました

all('.delete').last
51
Sharagoz

@sharagozの回答と、(findとは異なり)非同期が終了するのを待たないすべてについての@tgfのコメントに基づいて、この組み合わせは私にはうまくいくようです:

wait_for_ajax
all('.selector').last

これをrspec/capybaraに追加すると:

module RspecFeatureHelpers
  def wait_for_ajax
    Timeout.timeout(Capybara.default_max_wait_time) do
      loop do
        active = page.evaluate_script('jQuery.active')
        break if active == 0
      end
    end
  end
end
0
pixelearth