Огурец и капибара, щелкнув по элементу без ссылки или кнопки - PullRequest
45 голосов
/ 27 августа 2010

Я пытаюсь протестировать редактор на месте, используя стек Cucumber / Capybara / Selenium, но моя проблема в том, что редактор активируется нажатием на div, а не на ссылку или кнопку.Я не могу понять, как заставить Капибару сделать это.Есть ли способ сделать это?

Ответы [ 2 ]

62 голосов
/ 08 октября 2010

Вы можете нажать на элемент через Capybara::Element.click.Я добавляю следующее для этого в моем web_steps.rb, чтобы щелкнуть по элементам div.

When /^(?:|I )click within "([^"]*)"$/ do |selector|
  find(selector).click
end

Существует также Element.trigger('mouseover'), который, по-видимому, разрешает парение, хотя и не работает с Selenium.

Также очень вероятно, что вам нужно будет украсить вашу функцию / сценарий с помощью предоставленного Capybara тега @javascript.

0 голосов
/ 16 марта 2018

Помимо возможности нажимать на элементы кнопок, как объяснил @Jim Mitchener, вы также можете щелкнуть на части текста следующим образом:

# WhenI click on the text "Sign in"
When(/^I click on text "(.*?)"$/) do |text|
  click_text(text)
end

def click_text(text)
  elem = find(:xpath, "//*[contains(translate(text(), '#{text.upcase}', '#{text.downcase}'), '#{text.downcase}')]", match: :first, wait: false)
  scroll_to(elem, -200)
  elem.click
end

Эта вспомогательная функция делает то же самое, что и find(selector).click, он находит текстовый элемент.

Я нашел эта статья очень хорошая, она объясняет различные типы шагов, которые вы можете написать в огурце.

...