2011-08-14 14 views
8

Tengo un botón 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.mouse de desplazamiento sobre capybara

Respuesta

5

Es posible que desee utilizar un paso definido para este encargo, como:

When /^I click "([^"]*)" inside element "([^"]*)"$/ do |button, element_name| 

el interior, escribir algo como:

begin 
    evaluate_script("$('#{element_name}').trigger('mouseover')") 
    rescue Capybara::NotSupportedByDriverError 
end 

Y luego haga clic en el botón que usted quiere :)

+0

lamentablemente esto no funciona para css: hover menús desplegables basados ​​... necesitamos algún tipo de forma de mover de forma explícita un ratón falsa en torno a ciertas cosas ... – fringd

+0

Se debe trabajar en mi humilde opinión . Intenta ser más explícito así: evaluate_script ("$ ('div # name> ul> li> a: contiene (# {menu_name})'). Trigger ('mouseover')"). Además, afaik selenium admite mover un cursor en dimensiones x, y, pero esto no es divertido;) – socjopata

+0

socjopata, qué controlador de capibara estás usando y estás SEGURO de que estás usando css: hover y no javascript o jquery's .hover (. ..)? – fringd

0

Encontré una manera de simular "mouse hover" usando Capybara + el controlador Selenium. Prueba este código:

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

Esto no funciona –

+0

Funciona para mí con los controladores Chrome y Firefox de Selenium. Puede que tenga que esperar una fracción de segundo después de pasar el mouse antes de que responda. Si aún no funciona, utiliza la gema 'depurador', inserta una llamada a' depurador' en una de tus pruebas de Capybara, y luego experimenta con tipear comandos de Selenium mientras miras lo que está sucediendo en la ventana del navegador Chrome/FF. –

+0

Ah, en FF puede necesitar habilitar eventos nativos. Está en los documentos de Selenium ... –

Cuestiones relacionadas