2011-08-14 4 views
8

특정 요소 위로 마우스를 가져 가면 나타나는 페이지에 버튼이 있습니다. 그러나 이것을 에뮬레이션하고 링크를 클릭하여 Capybara와 Selenium을 사용하여 오이를 테스트하는 방법을 알아낼 수는 없습니다.카피 바라의 마우스 오버

답변

5

당신처럼,이에 대한 사용자 정의 단계를 사용 할 수 있습니다 :

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

내부, 당신은 같은 것을 쓰기 :

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

을 그리고 당신은 당신이 :)

원하는 버튼을 클릭합니다
+0

:이 코드를 시도 기반의 드롭 다운을 가져가 ... 우리가 명시 적으로 – fringd

+0

그것은 이럴 작동합니다 ... 어떤 일에 대한 주위에 가짜 마우스를 이동하는 방법의 일종이 필요합니다 . evaluate_script ("$ ('div # name> ul> li> a : contains (# {menu_name})). trigger ('mouseover ')"). 또한 afaik 셀렌은 x, y 차원에서 커서를 움직이는 것을 지원하지만 이것은 재미가 아닙니다.) – socjopata

+0

socjopata, capybara 드라이버를 사용하고 있으며 css : hover를 사용하고 있으며 javascript 나 jquery의 .hover (. ..)? – fringd

0

Capybara + the Selenium 드라이버를 사용하여 "마우스를 가리 키도록"시뮬레이션하는 방법을 찾았습니다. 슬프게도이 CSS를 위해 작동하지 않습니다

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

이것은 작동하지 않습니다 –

+0

Selenium의 Chrome 및 Firefox 드라이버에서 저에게 맞습니다. 호버링이 끝나기 전에 잠깐 기다려야 응답 할 수 있습니다. 여전히 작동하지 않는다면,'debugger' gem을 사용하고, Capybara 테스트 중 하나에서'debugger'에 대한 호출을 삽입 한 다음 Chrome/FF 브라우저 창에서 무슨 일이 일어나고 있는지보기 위해 Selenium 명령을 입력 해보십시오. –

+0

아, FF에서는 기본 이벤트를 활성화해야 할 수 있습니다. 그것은 셀레늄 문서에있어 ... –