2011-06-17 14 views
8

Tengo un enlace en una página que solo aparece al pasar el ratón sobre un elemento determinado. Pero no puedo entender cómo emular esto y luego hacer clic en el enlace para poder probar el pepino usando Capibara y Selenio.Uso de capibaras y selenio para desplazarse sobre un elemento

¿Alguien sabe cómo hacer esto? He intentado ejecutar javascript y también intentar hablar directamente con el controlador de selenio, pero hasta ahora no estoy teniendo mucha suerte ...

Respuesta

2

Use Selenium's fireEvent en un evento mouseover y luego haga una pausa para el tiempo de espera requerido.

+0

Hmm ... Debo estar haciendo algo estúpido. Probé la línea: page.driver.browser.fireEvent (selector, "mouseover") en mi paso web pero me sale el siguiente error: método indefinido 'fireEvent 'para # (NoMethodError) alguna idea? –

+0

@borrible ¿tiene algún código de ejemplo para hacer esto? Tengo el mismo problema. – Chet

0

He trabajado en uno similar que he usado a continuación, vea esto podría ayudarlo.

Uso de Selenium IDE.
1. Navegue a la página requerida.
2. Inicie IDE de selenio y obtenga el objetivo de enlace.
3. Cambie el comando a mouseOver Haga doble clic en el comando de Selenium IDE.
4. Mostrará el enlace que necesita.
5. Otra vez Comience a grabar y registre el enlace requerido.

Cuando hace doble clic en el comando mouseOver crea la simulación del mouse sobre IDE y puede usar el mouse para grabar el enlace emergente.

Gracias

0

que finalmente lograron que el conductor Carpincho + Selenio a "flotar" sobre un elemento. Este es el código que estoy usando:

module Capybara 
    module Node 
    class Element 
     def hover 
     @session.driver.browser.action.move_to(self.native).perform 
     end 
    end 
    end 
end 
+2

No funciona para mí –

3

Esta pregunta tiene algunos años, por lo que la respuesta podría haber cambiado. En las versiones más nuevas de Capybara hay algunas maneras diferentes de hacerlo, dependiendo del controlador que esté usando.

Para el selenio, puede ejecutar javascript:

page.execute_script '$("#element").trigger("mouseover")' 

versiones más recientes de selenio WebDriver soportan un método emergente:

find('#element').hover 

Para capibara en WebKit, el controlador es compatible con disparo de eventos en el elemento :

find('#element').trigger(:mouseover) 

Originalmente encontré la respuesta a esta pregunta de here y here.

+0

la segunda forma ('.hover') desencadena las reglas css': hover', las otras dos no parecen (solo activan los controladores de javascript del evento mouseover). Yo uso '.hover' p. Ej. para hacer que los enlaces invisibles se desvanezcan antes de hacer clic en ellos. – artm

Cuestiones relacionadas