2011-07-17 16 views
19

estoy usando Carpincho 1.0.0, y tengo un enlace en mi página de la que se pone visible cuando cursor del mouse encima de ese bloque. Así que quiero activar el mouse en la prueba para poder hacer clic en ese enlace oculto. Lo busqué en Google, pero no pude encontrar la solución que me conviene. ¿Pueden ayudarme con esto?No puede desencadenar evento de ratón en Carpincho prueba

Respuesta

12

He optado por utilizar Carpincho webkit, y por desgracia tuve que recurrir a la ejecución de Javascript usando jQuery:

page.execute_script('$(".ClassSelector").trigger("hover")') 
+2

La gente tiene que dejar de sugerir esto. Siempre hay formas de hacer esto usando capibaras, el controlador o el elemento nativo. El script de ejecución se ejecuta inmediatamente y no respeta ningún tipo de ámbito. – Senjai

+0

¿Puede proporcionar un código de ejemplo para cada uno de los métodos que describe aquí? –

1

que tenía un montón de problemas para conseguir que esto funcione así. Hay mucha información conflictiva en la web. Así es como lo hice:

Marco: carriles 3.2.1, 1.1.2, capibara rspec 2.8.0, selenio-WebDriver 2.20.0

page.execute_script "$('tr.user-#{user.id}').trigger('mouseover')"

Esto hará que los enlaces que antes estaban ocultos a aparecerá (en virtud de la función de la libración de jQuery), que son entonces accesibles para have_link y click_link.

Nota: usted hace no quiere escribir page.evaluate_script ya que esto no funcionará.


Editar: Bueno, me acabo de dar cuenta de que la solución de @kelly-sutton es la misma que la mía. Entonces puedo confirmar esto.

6

This commit añade el método vuelo estacionario. Tiene la ventaja de incluir efectos de desplazamiento css en los elementos.

Uso:

find('#posts .post .comments .comment').hover 
0

Por problemas de visibilidad a veces ayuda a cambiar el tamaño de ventana de poltergeist. Lo he hecho en spec_helper.rb

Capybara.register_driver :poltergeist do |app| 
    Capybara::Poltergeist::Driver.new(app, window_size: [1280, 600]) 
    end 
0

Además de utilizar ya sea find('#element').hover o page.execute_script "$('#element_2').trigger('mouseover');" uno también debe pasar js: true al bloque describe con el fin de activar el Javascript (a menos que lo haya hecho en la configuración) Esto me hizo tropezar un poco.

Cuestiones relacionadas