0

これまですべてのテストに合格していましたが、1週間後に作成したFacebookログインテストに問題が発生したため、Facebookでログインするために使用する手順は次のとおりです。

When /^I login to facebook$/ do
  browser = page.driver.browser
  browser.switch_to.default_content
  fill_in "email", :with => @facebook_test_user["email"]
  fill_in "pass", :with => @facebook_test_user["password"]
  click_button "Connection"
end

Facebookはフランス語であるため、このテストは問題なく合格しました。ボタンのテキストはConnectionでしたが、Facebookに他の言語を使用しているユーザーもテストを実行しており、失敗します。Facebookボタンのレイアウトは次のようになります。

<div id="login_button_inline">
  <label for="u2krk0_2" id="loginbutton" class="uiButton uiButtonConfirm uiButtonLarge">
    <input type="submit" id="u2krk0_2" name="login" value="Connection">
  </label>
</div>

IDは絶えず変化するため、IDを使用することはできません。テストに合格するために、Facebookの言語を気にせずにボタンをクリックするにはどうすればよいですか?

4

1 に答える 1

2

ボタンの名前だと思います-「ログイン」はそれを見つけるのに良いことでしょう。Capybaraのclick_buttonメソッドは、ID、テキスト、または値でのみボタンを見つけることができるため、自分で見つける必要があります。

find(:css, "input[name='login']").click

ページの他の場所に他の「ログイン」ボタンがある場合はスコープを制限する必要があるかもしれませんが、そうでない場合はこれでうまくいくはずです。

于 2012-08-15T14:03:25.077 に答える