Capybaraのウェイト時間で足りない場合、さらに待たせる。

Capybaraのウェイト時間で足りない場合、さらに待たせる。

Capybaraはfindなどの要素検索メソッドで、見つかるまである程度の時間待ってくれます。

時間が足りない場合は

Capybara.default_max_wait_time = 30

などとすることで時間を増やせます。

all('hoge')[0].clickだとおなじみのundefined method `click' for nil:NilClassで終わる

終わりますので、終わらせないために適当にrescueします。

def re_find(wait = 0.5, count = 20, &block)
  yield
rescue
  raise if count == 0

  sleep wait
  re_find(wait, count - 1, &block)
end
re_find { page.all('a.niceButton')[0].click }

これで中断もできますし、急場はしのげますね。