2011-08-14 43 views
8

Tôi có một nút trên trang chỉ xuất hiện khi di chuột qua một phần tử nhất định. Nhưng tôi không thể tìm ra cách mô phỏng điều này và sau đó nhấp vào liên kết để tôi có thể thử nghiệm dưa chuột bằng cách sử dụng Capybara và Selenium.di chuột trên capybara

Trả lời

5

Bạn có thể muốn sử dụng một bước định nghĩa tùy chỉnh cho điều này, như:

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

Bên trong, bạn viết một cái gì đó như:

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

Và sau đó bạn nhấp vào nút đó bạn muốn :)

+0

buồn bã này không làm việc cho css: hover dựa thả xuống ... chúng ta cần một số loại cách để di chuyển một cách rõ ràng một con chuột giả xung quanh cho những thứ nhất định ... – fringd

+0

Nó sẽ làm việc IMHO . Cố gắng rõ ràng hơn như thế này: eval_script ("$ ('div # name> ul> li> a: contains (# {menu_name})'). Trigger ('mouseover')"). Ngoài ra, afaik selenium hỗ trợ di chuyển con trỏ theo kích thước x, y, nhưng điều này không thú vị;) – socjopata

+0

socjopata, trình điều khiển capybara nào bạn đang sử dụng và bạn có chắc chắn bạn đang sử dụng css: hover và không javascript hay jquery .hover (. ..)? – fringd

0

Tôi tìm thấy một cách để mô phỏng "di chuột" bằng cách sử dụng Capybara + trình điều khiển Selenium. Hãy thử mã này:

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

Thao tác này không hoạt động –

+0

Hoạt động với tôi bằng trình điều khiển Chrome và Firefox của Selenium. Bạn có thể phải đợi một phần giây sau khi lơ lửng trước khi nó phản hồi. Nếu nó vẫn không hoạt động, sử dụng gem 'debugger', chèn một lời gọi tới' debugger' trong một thử nghiệm Capybara của bạn, và sau đó thử nghiệm bằng cách gõ lệnh Selenium khi bạn xem những gì đang xảy ra trong cửa sổ trình duyệt Chrome/FF. –

+0

Ồ, trong FF, bạn có thể cần bật các sự kiện gốc. Nó nằm trong tài liệu của Selenium ... –

Các vấn đề liên quan