наведите мышь на капибару

У меня есть кнопка на странице, которая появляется только при наведении курсора на определенный элемент. Но я не могу понять, как это эмулировать, а затем щелкнуть ссылку, чтобы протестировать ее на огурце с помощью Capybara и Selenium.


person yehud    schedule 14.08.2011    source источник


Ответы (2)


Вы можете использовать для этого настраиваемый шаг, например:

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

Внутри вы пишете что-то вроде:

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

И затем вы нажимаете ту кнопку, которую хотите :)

person socjopata    schedule 15.08.2011
comment
к сожалению, это НЕ работает для раскрывающихся списков на основе css: hover... нам нужен какой-то способ явного перемещения фальшивой мыши для определенных вещей... - person fringd; 12.07.2012
comment
Имхо должно работать. Попробуйте выразиться более явно, например: Кроме того, afaik selenium поддерживает перемещение курсора по осям x, y, но это не весело;) - person socjopata; 12.07.2012
comment
socjopata, какой драйвер капибары вы используете, и вы УВЕРЕНЫ, что используете css :hover, а не javascript или jquery .hover(...)? - person fringd; 12.07.2012

Я нашел способ имитировать «зависание мыши», используя Capybara + драйвер Selenium. Попробуйте этот код:

module Capybara
  module Node
    class Element
      def hover
        @session.driver.browser.action.move_to(self.native).perform
      end
    end
  end
end
person Alex D    schedule 24.12.2012
comment
У меня работает с драйверами Selenium Chrome и Firefox. Возможно, вам придется подождать доли секунды после наведения, прежде чем он ответит. Если это все еще не работает, используйте гем debugger, вставьте вызов debugger в один из ваших тестов Capybara, а затем поэкспериментируйте с вводом команд Selenium, наблюдая за тем, что происходит в окне браузера Chrome/FF. - person Alex D; 20.02.2013