2017-02-03 3 views
1

Ich versuche, eine Schaltfläche zu klicken, aber ich die folgende Fehlermeldung erhalten:Wie klicke ich auf diese Schaltfläche mit Ruby Capybara?

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

Dies ist, was ich bekomme, wenn ich es auf Chrome inspizieren:

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

Und das ist mein code (meine steps.rb):

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

Ich bin neu in Ruby Capybara, kann mir bitte jemand helfen?

+0

Sie verwenden 'click_link', wenn Ihre Frage nach einer Schaltfläche fragt. Probiere stattdessen 'click_button'. – Phil

+0

Welchen Treiber benutzen Sie? Ändert CSS den Fall des Textes "Meine Aufgaben" in Ihrem Link? Sehen Sie sich 'page.html' kurz vor dem Aufruf von click_link an und prüfen Sie, ob der Link tatsächlich auf der Seite ist (und dass Sie sich auf der Seite befinden, die Sie zu sein glauben) –

Antwort

1

Das Problem könnte sein, dass es sich wirklich um einen Link handelt, auf den Sie klicken möchten (ein <a href="/some-link">Some Text</a>-Tag), nicht um einen Button (ein <button type="button">Some text</button>-Tag). Um dieses Problem nicht haben, empfehle ich, dass Sie die folgenden method verwenden:

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

Oder es könnte sein, dass der Link oder eine Schaltfläche erscheint nicht auf der Seite vor Capybara mal aus. Capybara standardmäßig wartet 2 Sekunden, bevor es mal aus, aber man kann es mit

Capybara.default_max_wait_time = 9 

Eine andere Sache, erweitern Sie dieses Problem debuggen tun können, ist ein Aufruf an binding.pry direkt vor den Link/Button klicken und überprüfen hinzufügen, wenn die Taste ist es eigentlich mit dem Text, den Sie erwarten, dass es haben:

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 

Hinweis Sie install pry benötigen würde es für Sie Gemfile oder mit gem install pry durch Zugabe.

+0

' click_link' wird als 'find_link (...) implementiert. Klicken Sie auf ", so dass das keinen Unterschied macht (und als solches hat' click_link' das gleiche Warteverhalten für den passenden Link, um angezeigt zu werden) - und 'find_button' findet Elemente nicht, so dass es hier nicht funktioniert –

Verwandte Themen