LoginSignup
16
15

More than 5 years have passed since last update.

Seleniumでクリック操作後に待機させる対応

Last updated at Posted at 2014-01-09

はじめに

  • 以下の環境下でのテストをしたところ、クリック操作後にページのロードを待たずにコケてた
    • OS:Mac OS X Mavericks
    • ブラウザ:Safari 7.0
    • selenium-webdriver:2.39.0
    • capybara:2.1.0
    • cucumber:1.3.10

解析

  • Seleniumを使って他にもFirefox,Chromeでのテストを行っているが同じコードを使用してもこの現象が見られるのはSafariのみ
  • 以下のどちらのやり方でも同じ結果だった
    • find('#id').click
    • click_link 'ログイン' #名前は適当
  • click操作を書いているすぐ後に、sleepを入れたら通った
    • そうだろうとうすうす感づいていたが悲しかったm(__)m

対応

  • capybaraの設定を書いているファイル(私の場合はsupport/capybara_config.rb)に以下を追記
class Selenium::Webdriver::Element
  def click
    bridge.clickElement @id
    sleep 1 #ここはページロードを待つとかでも何でもいい
  end
end
  • ちなみに、以下の設定をしてもだめだった
# Selenium側の設定
client = Selenium::Webdriver::Remote::Http::Default.new
client.timeout = 100 #100sec

# Capybara側の設定
Capybara.default_wait_time = 10

~ただの宣伝~

  • 全国のSeleniumer必読
  • Selenium, SauceLabs, Travis, Jenkinsに関するノウハウ書いているのでよかったら参考にしてみてください
16
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
15