Невозможно вызвать событие мыши в тесте Capybara - PullRequest
20 голосов
/ 17 июля 2011

Я использую Capybara 1.0.0, и у меня есть ссылка на моей странице, которая становится видимой при наведении курсора мыши на этот блок.Поэтому я хочу, чтобы в тесте была вызвана мышь, чтобы я мог щелкнуть эту скрытую ссылку.Я гуглил это, но не мог найти решение, которое подходит мне.Ребята, можете ли вы помочь мне с этим?

Ответы [ 6 ]

13 голосов
/ 20 декабря 2011

Я решил использовать веб-набор Capybara, и, к сожалению, мне пришлось прибегнуть к выполнению javascript с использованием jQuery:

page.execute_script('$(".ClassSelector").trigger("hover")')
12 голосов
/ 07 марта 2012

В этом блоге есть ответ:

http://aokolish.me/blog/2012/01/22/testing-hover-events-with-capybara

page.find('#element').trigger(:mouseover)

Это не работает с драйвером селена:

http://rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Element#trigger-instance_method

7 голосов
/ 21 августа 2013

Этот коммит добавил метод наведения. Он имеет преимущество, заключающееся в включении эффектов наведения CSS на элементы.

Использование:

find('#posts .post .comments .comment').hover
1 голос
/ 23 апреля 2012

У меня было много проблем, чтобы заставить это работать.В сети много противоречивой информации.Вот как я это сделал:

Настройка: рельсы 3.2.1, капибара 1.1.2, rspec 2.8.0, селен-вебдрайвер 2.20.0

page.execute_script "$('tr.user-#{user.id}').trigger('mouseover')"

Это приведет к появлению ранее скрытых ссылок (благодаря функции наведения jQuery), которые затем будут доступны для have_link и click_link.

Примечание: вы не хотитенапишите page.evaluate_script, поскольку это не сработает.


Редактировать: Ну, я только что понял, что решение @ kelly-sutton такое же, как у меня.Так что я могу это подтвердить.

0 голосов
/ 08 июля 2014

Помимо использования find('#element').hover или page.execute_script "$('#element_2').trigger('mouseover');" необходимо также передать js: true в блок describe, чтобы включить JavaScript (если вы не сделали этого в своей конфигурации). Это сбило меня с толку.

0 голосов
/ 17 февраля 2014

Для проблем с видимостью иногда помогает изменить размер окна для poltergeist. я сделал это в spec_helper.rb

  Capybara.register_driver :poltergeist do |app|
    Capybara::Poltergeist::Driver.new(app, window_size: [1280, 600])
  end 
...