Я пытаюсь протестировать редактор inplace, используя стек Cucumber/Capybara/Selenium, но моя проблема заключается в том, что редактор активируется нажатием на div, а не на ссылку или кнопку. Кажется, я не могу понять, как заставить Капибару это сделать. Есть ли способ сделать это?
Огурцы и Capybara, нажатие кнопки без ссылки или кнопки
Ответ 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
, она находит текстовый элемент.
Я нашел эту статью очень хорошо, он объясняет различные типы шагов, которые вы можете писать в огурцах.