J'essaie de tester un éditeur in-situ en utilisant une pile concombre/capybara/sélénium, mais le problème est que l'éditeur est activé en cliquant sur un div et non sur un lien ou un bouton. Je n'arrive pas à comprendre comment amener Capybara à faire cela. Y-a-t'il une façon de le faire?
Vous pouvez cliquer sur un élément via Capybara::Element.click
. J'ajoute ce qui suit pour cela dans mon web_steps.rb
afin de cliquer sur divs.
When /^(?:|I )click within "([^"]*)"$/ do |selector|
find(selector).click
end
Il y a aussi Element.trigger('mouseover')
qui semble permettre le survol bien que ne fonctionnant pas avec Selenium.
Il est également très probable que vous aurez besoin de décorer votre fonction/scénario avec la balise @javascript
fournie par Capybara.
En plus de pouvoir cliquer sur des éléments de bouton comme @Jim Mitchener, vous pouvez également cliquer sur une partie du texte de la manière suivante:
# 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
Cette fonction d'assistance fait la même chose que find(selector).click
, elle trouve l'élément de texte.
J'ai trouvé cet article très bien, il explique différents types d'étapes que vous pouvez écrire en concombre.