2011-08-14 22 views
8

Mam przycisk na stronie, który pojawia się tylko po najechaniu na dany element. Ale nie mogę wymyślić, jak to naśladować, a następnie kliknąć na link, aby przetestować go używając Capybara i Selenium.hover mouse on capybara

Odpowiedz

5

Możesz użyć niestandardowego zdefiniowane krok do tego, jak:

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

Wewnątrz, piszesz coś takiego:

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

A następnie kliknąć ten przycisk, który chcesz :)

+0

niestety to nie działa dla CSS: hover oparte rozwijanych ... musimy jakiś sposób jawnie przenieść fałszywy myszy wokół pewnych rzeczy ... – fringd

+0

To powinno działać IMHO . Staraj się być bardziej jednoznaczny: assess_script ("$ (" div # name> ul> li> a: contains (# {menu_name}) '). Trigger ("mouseover") "). Również afaik selen wspiera poruszanie kursorem w wymiarach x, y, ale to nie jest fajne;) – socjopata

+0

socjopata, jakiego używasz sterownika kapibara i czy jesteś pewien, że używasz css: hover, a nie javascript lub jquery's .hover (. ..)? – fringd

0

Znalazłem sposób na symulowanie "zawisu myszy" za pomocą sterownika Capybara + Selenium. Spróbuj tego kodu:

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

To nie działa –

+0

Działa dla mnie ze sterownikami Chrome i Firefox firmy Selenium. Być może będziesz musiał poczekać ułamek sekundy po najechaniu kursorem, zanim odpowie. Jeśli nadal nie działa, użyj klejnotu 'debugger', włóż połączenie do' debuggera' w jednym z testów Capybara, a następnie eksperymentuj z wpisywaniem komend Selenium podczas oglądania, co dzieje się w oknie przeglądarki Chrome/FF. –

+0

Och, w FF może być konieczne włączenie zdarzeń natywnych. Jest w dokumentach Selenium ... –