0

FB-Connect リンクを表示する HTML に次のスニペットがあります。

<fb:login-button id="mylogin" onlogin="try {
window.location.href = "http://localhost:3000/";
} catch (e) { alert('RJS error:\n\n' + e.toString()); alert('window.location.href = \"http://localhost:3000/\";'); throw e }"></fb:login-button>

手動でクリックするとうまくいきます。しかし、Cucumber (@javascript タグ) で Capybara+Selenium を使用すると、クリックする要素がまったく見つからないようです。次のように、いくつかの組み合わせを試してみました。

When I follow "mylogin" # or
When I press "mylogin"

そして、次のような答えが得られます。

no link with title, id or text 'mylogin' found (Capybara::ElementNotFound)

また、内部テキスト「Login」または「login-button」を一致させてみましたが、役に立ちませんでした。Cucumber と Capybaraのアドバイスに従って、リンク以外の要素やボタン要素もクリックしようとしましたが、うまくいきませんでした。

Facebooker2 gem を使用してリンクを生成しています。

#in my index.html.haml
= fb_connect_async_js
= fb_login_and_redirect('http://localhost:3000/', id: 'mylogin')

宝石のバージョン:

capybara (0.3.9) #(actually pulling it from github directly)
xpath (~> 0.1.2)
selenium-webdriver (>= 0.0.27)
cucumber (0.9.2)

ヒントはありますか?ありがとう。

4

1 に答える 1

0

私は Cucumber を使用していませんが、Capybara で要素を検索すると、「コンテンツ」と「名前」がチェックされることがわかります。もちろん、エラーメッセージのIDを調べていると具体的に言っているので、そうではないかもしれません。実際の問題は次のとおりだと思います。

no link with

エラーメッセージには、リンクを探していることを意味し、そこにリンクがないため、javascript要素があります。

それでも、「id」を確認したい場合は、パラメーター id='mylogin' を持つ要素を探すように具体的に依頼します。おそらく xpath などの別の方法を使用します。

繰り返しますが、Cucumber についてはわかりませんが、Capybara の場合は次のようにします。

page.first(:xpath, '//[@id="mylogin"]').click
于 2011-10-07T14:29:11.573 に答える