###前提・実現したいこと
Rubyにおいてエラーが起きた際、プログラミングを止めない為にrescueを追加しました。
本来60秒程度で終わっていたプログラムが、640秒近くまで動作を終了するのに時間が掛かってしまいます。
考察ですが、rescueを使用する事によってタイムアウトするまで動作を繰り返しているのではないかと考えております。
使用している事コードは下記になります。
###該当のコード
def point(i) if i.find_element(:xpath => ".//th[contains(text(),'ポイント利用')]").displayed? == true i.find_element(:xpath => ".//th[contains(text(),'ポイント利用')]/following-sibling::td").text() end rescue Selenium::WebDriver::Error::NoSuchElementError return "なし" end
###質問
rescueの使用法が間違っているのでしょうか?
また、もしタイムアウトをするまで動作を繰り返していた場合、タイムアウト時間を短くする方法または、繰り返させない方法を教えて頂けれないでしょうか
宜しくお願い致します。
###編集部分
ボトルネックになっている部分は条件分岐で使用しているelement_present?メソッドまたは、point_nextTDメソッドかと思います。
計測結果、element_present?にてrealが平均20秒掛かっています。
このrealの待機時間を解消する方法はないでしょうか?
###ベンチマークの実施結果
該当のコード
Ruby
1 def point(i) 2 if element_present?(i, :xpath, ".//th[contains(text(),'ポイント利用(')]") == true 3 point_nextTD(i) 4 else 5 return " " 6 end 7 end 8 9 def element_present?(where, how, what) 10 Benchmark.bm 10 do |r| 11 r.report "条件分岐" do 12 begin 13 where.find_element(how => what) 14 true 15 rescue Selenium::WebDriver::Error::NoSuchElementError 16 false 17 end 18 end 19 end 20 end 21 22 def point_nextTD(i) 23 Benchmark.bm 10 do |r| 24 r.report "アクション" do 25 i.find_element(:xpath => ".//th[contains(text(),'ポイント利用(')]/following-sibling::td").text().gsub(/[円]/,"").gsub(/[,]/,"").to_i 26 end 27 end 28 end 29
ベンチマーク結果
Ruby
1 user system total real 2条件分岐 0.040000 0.020000 0.060000 ( 26.678073) 3 user system total real 4条件分岐 0.050000 0.030000 0.080000 ( 25.499489) 5 user system total real 6条件分岐 0.010000 0.000000 0.010000 ( 0.017920) 7 user system total real 8条件分岐 0.050000 0.030000 0.080000 ( 24.706779) 9 user system total real 10条件分岐 0.000000 0.000000 0.000000 ( 0.011791) 11 user system total real 12条件分岐 0.000000 0.000000 0.000000 ( 0.012549) 13 user system total real 14条件分岐 0.050000 0.020000 0.070000 ( 25.037440) 15 user system total real 16条件分岐 0.050000 0.020000 0.070000 ( 26.076752) 17 user system total real 18条件分岐 0.000000 0.000000 0.000000 ( 0.018694) 19 user system total real 20アクション 0.000000 0.000000 0.000000 ( 0.038412) 21 user system total real 22アクション 0.010000 0.000000 0.010000 ( 0.028833) 23 user system total real 24アクション 0.010000 0.000000 0.010000 ( 0.032794) 25 user system total real 26アクション 0.000000 0.000000 0.000000 ( 0.026723) 27 user system total real 28アクション 0.000000 0.000000 0.000000 ( 0.030527) 29 30
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/06 14:23
2016/11/06 14:25
2016/11/07 01:40 編集