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

Огурцы и Capybara, нажатие кнопки без ссылки или кнопки

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

4b9b3361

Ответ 1

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

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

Существует также Element.trigger('mouseover'), который позволяет включить зависание, хотя и не работает с Selenium.

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

Ответ 2

Помимо возможности щелчка по элементам кнопки, например @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, она находит текстовый элемент.

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