2017-02-03 8 views
1

私はボタンをクリックしようとしているが、私は次のエラーを取得しています:Ruby Capybaraを使用してこのボタンをクリックするにはどうすればよいですか?

Unable to find link or button "My Tasks" (Capybara::ElementNotFound)

これは私がChromeでそれを調べるときに私が得るものです:

<a class="btn btn-lg btn-success" href="/tasks" role="button">My Tasks</a> 

そして、これは私ですコード(私のsteps.rb):

# go to my tasks page 
    def visitTasksPage 
     page.has_content?('Signed in succesfully') do 
     clicK_link 'My Tasks' 
     end 
     self 
    end 

私はRuby Capybaraを初めて使っています。

+0

あなたの質問がボタンについて質問しているときにあなたは 'click_link'を使用しています。代わりに 'click_button'を試してみてください。 – Phil

+0

どのようなドライバを使用していますか?あなたのリンクの "My Tasks"テキストの大文字と小文字をCSSが変更していますか? click_linkを呼び出す前に 'page.html'を見て、リンクが実際にページにあるかどうかを確認してください(あなたがあなたと思っているページにいることを確認してください) –

答えて

1

実際には、ボタン(タグ)ではなく、クリックしようとしているリンク(<a href="/some-link">Some Text</a>タグ)が問題である可能性があります。

click_on('My Tasks') # clicks on either links or buttons 

をそれとも、リンクやボタンが出カピバラ時間前にページに表示されていないことが考えられます。この問題を持っていないために、私はあなたがmethod次使用することをお勧めします。デフォルトでは、カピバラがタイムアウトするまでに2秒間待機しますが、右のリンク/ボタンをクリックする前に

Capybara.default_max_wait_time = 9 

あなたはこの問題はbinding.pryに呼び出しを追加でデバッグするためにできる別のことでそれを拡張しているかどうかを確認することができます

page.has_content?('Signed in succesfully') do 
    binding.pry # at this point you can test if the link is really there with page.has_content?('My Tasks') 
    click_link 'My Tasks' 
end 

注意はあなたにGemfileを、それを追加することによって、またはgem install pryinstall pryする必要があります:ボタンは、あなたがそれを持っていることを期待テキストと実際にそこにあります。

+0

' click_link'は 'find_link(...)として実装されています。クリックすれば差が出ないようになります(そして、そのような 'click_link'はリンクとのマッチングのために同じ待ち行動をします) - そして' find_button'は要素を見つけませんのでここでは動作しません –

関連する問題