2016-10-18 7 views
0

ここに私のコードです。私はこれを1.5時間ぐちゃぐちゃにしていて、CapybaraにElementNotFoundエラーなしのリンクをクリックさせてもらう必要があります。サイトを訪れるのは期待どおりですが、リンクをクリックしたり、フォームに記入したりすると、実際にDOMとやりとりすることはできません。どんな助けでも大歓迎です。Capybara :: ElementNotFoundエラー - スーパーシンプルなカピバラの例が失敗しています。理由は何も分かりません。

require 'capybara' 
require 'capybara/dsl' 

class Prowler 
    include Capybara::DSL 

    def initialize 
    Capybara.run_server = false 
     Capybara.default_driver = :selenium 
    end 

    def visitSite 
    session = Capybara::Session.new(:selenium) 
    session.visit "https://www.cnn.com" 
    click_link 'Entertainment' 
    end 
end 

prowler = Prowler.new 
prowler.visitSite 
+0

を参照セッションのメソッドを呼び出すことはありませんあなたはxpathを使ってみましたか?例えば。 ( "// h1")をクリックしてください。 –

+0

いいえ、なぜこれが機能していないのかを知りたいだけです。これはすべて "hello world"の例に過ぎず、失敗し続けます。 –

答えて

1

URLにアクセスしたセッションでclick_linkを呼び出さないため、失敗しています。 Capybara :: DSLを含めることで、オブジェクト上で利用可能なすべてのCapybarasメソッドを作成しました。click_linkを呼び出すと、実際にはCapybara.current_session.click_linkが呼び出されます。しかし、あなたはCapybara.current_sessionではない独自のセッションを作成しているので、Capybaraにセッションを管理させる必要があります(これは、クラスインスタンスごとにセッションが必要なようなので、うまくいきません)

visit 'www.cnn.com' 
click_link 'Entertainment' 

やカピバラ:: DSLが含まれており、代わりにあなたがやっているようにあなたは、クラスのインスタンスごとに独自のセッションだ管理し、

session = Capybara::Session.new(:selenium) 
session.visit "https://www.cnn.com" 
session.click_link 'Entertainment' 

https://github.com/jnicklas/capybara#using-sessions

関連する問題