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
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 :)
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
To nie działa –
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. –
Och, w FF może być konieczne włączenie zdarzeń natywnych. Jest w dokumentach Selenium ... –
niestety to nie działa dla CSS: hover oparte rozwijanych ... musimy jakiś sposób jawnie przenieść fałszywy myszy wokół pewnych rzeczy ... – fringd
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
socjopata, jakiego używasz sterownika kapibara i czy jesteś pewien, że używasz css: hover, a nie javascript lub jquery's .hover (. ..)? – fringd