Подтвердить что ты не робот

Невозможно вызвать событие мыши в тесте Capybara

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

4b9b3361

Ответ 1

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

page.execute_script('$(".ClassSelector").trigger("hover")')

Ответ 3

Этот коммит добавил метод наведения. Преимущество состоит в том, что эффекты css hover влияют на элементы.

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

find('#posts .post .comments .comment').hover

Ответ 4

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

Настройка: рельсы 3.2.1, capybara 1.1.2, rspec 2.8.0, selenium-webdriver 2.20.0

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

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

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


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

Ответ 5

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

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

Ответ 6

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