• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Ruby Selenium 要素の待機)

Ruby Selenium要素の待機

このQ&Aのポイント
  • Rubyの初心者がSeleniumを使って要素の待機を行いたい
  • スクレイピングを行う際に404エラーが発生し、要素が見つからない場合には再試行したい
  • 参考になるサイトを見ながら試行錯誤をしているが、うまくいっていない

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.3

>google.rb:35:in `rescue in try': undefined method `縲€if' for main:Object (NoMet hodError) 私の回答をコピペして空白が全角のままではありませんか? 全角空白と半角空白の区別が付くエディタを使いましょう。

kann3589
質問者

お礼

terapadを使っているにもかかわらず全角空白表示をオフにしていました。 早速全角を半角に置換して実行した所上手く成功しました。 最後までご指導いただき、本当にありがとうございました。

その他の回答 (2)

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

>どのように組めばいいかも分かっていない状態です。 何がわからないのかわからないです。 >例外、404に行くとSelenium::WebDriver::Error::NoSuchElementErrorでコード自体が落ちてしまいます。 ですから、その落ちる部分を私の書いた、「例外が起こるかもしれないことをする」に書けば良いのですが。

kann3589
質問者

お礼

ありごとうございます。 ご伝授通りもう一度試してみました。 require 'selenium-webdriver' def try(n=10) # 例外が起こるかもしれないことをする driver = Selenium::WebDriver.for :chrome #chrome のdriverを設定 driver.navigate.to "https://www.google.co.jp/" #URL移動 driver.find_element(:xpath, '//*[@id="hoge"]').click sleep 2 driver.quit #ブラウザ終了 rescue => e  if n==0   raise e  else   try(n-1)  end end try 上記を試しに実行しました。 hogeは存在しないので絶対に落ちます。 エラーがこのように出ました。 google.rb:35:in `rescue in try': undefined method `縲€if' for main:Object (NoMet hodError) from google.rb:5:in `try' from google.rb:42:in `<main>'

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

Seleniumは使ったことないですが、例外が上がったときに一定回数リトライするために私が使っている方法です。これがベストでは無いと思いますが。 def try(n=10)  例外が起こるかもしれないことをする rescue => e  if n==0   raise e  else   try(n-1)  end end try

kann3589
質問者

お礼

ありがとうがとうございます。 一応試してみたのですが上手くいきませんでした。 どのように組めばいいかも分かっていない状態です。 例外、404に行くとSelenium::WebDriver::Error::NoSuchElementErrorでコード自体が落ちてしまいます。 seleniumIDEでは rescue Selenium::WebDriver::Error::NoSuchElementError false end の出力でこのような感じで載っているので何か分かればと思っています。 また、ifで回避しようと試みましたが上手くいきませんでした。

関連するQ&A