web-dev-qa-db-ja.com

きゅうりとカピバラ、非リンクまたはボタン要素をクリック

Cucumber/Capybara/Seleniumスタックを使用してインプレースエディターをテストしようとしていますが、リンクやボタンではなくdivをクリックするとエディターがアクティブになるのが問題です。カピバラにこれをさせる方法を理解することができないようです。これを行う方法はありますか?

46
trobrock

_Capybara::Element.click_ で要素をクリックできます。このために_web_steps.rb_に以下を追加して、divをクリックします。

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

Element.trigger('mouseover') もあり、Seleniumで動作していないにもかかわらずホバーを有効にするように見えます。

また、Capybaraが提供する_@javascript_タグを使用して機能/シナリオを装飾する必要がある可能性も高くなります。

62
Jim Mitchener

説明されている@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と同じことを行い、テキスト要素を見つけます。

私は この記事 を見つけました。キュウリで書くことができるさまざまなタイプのステップを説明しています。

0
Nesha Zoric