Pregunta ¿Cómo encontrar el último elemento coincidente en capibara?


Yo quería hacer encontrar por class_name y devolver el último elemento entre todos los elementos.

En jquery, podemos escribir algo como a continuación, pero eso no parece funcionar en capibara

find(".delete:last")

Si estás usando webkit conductor puede escribir algo como -

find(".delete:last-child")

En capibara, puedes obtener el último elemento usando abajo -

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

¿Hay alguna alternativa a la anterior?


32
2017-08-29 09:40


origen


Respuestas:


Tuve el mismo problema y terminé usando este método en Capybara 2.4

all('.delete').last

44
2017-07-04 12:06



Sobre la base de la respuesta de @Sharagoz y el comentario de @ tgf sobre todo (a diferencia de find) sin esperar a que la sincronización termine, esta combinación parece funcionar para mí:

wait_for_ajax
all('.selector').last

Con esto agregado a 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
2017-11-26 20:00