サイトのいくつかのページにアクセスするために Capybara (Selenium ドライバー) を使用しています。配列内のすべての項目をクリックして、戻るボタンをクリックするだけです。うまくいきますが、何度か繰り返した後、毎回壊れます。コードは次のとおりです。
all(:xpath, '//table[@class="griglia_bordata"]//tr[td]/td/a[1]').each do |a|
a_js_functions << a[:href]
end
a_js_functions.each do |js_for_model|
puts js_for_model
page.execute_script js_for_model
find(:xpath, "//a[text()='Check availability']").click
puts find(".testo_grande_blu_B").text
puts "--------------------------------------------"
find(:xpath, "//a[text()='Back']").click
end
出力があります:
javascript:selectModel('130254') スタイル: RB2132 --------------------------------------- ----- javascript:selectModel('309257') スタイル: RB2140 ---------------------------------- ---------- javascript:selectModel('68238') スタイル: RB3016 ----------------------------- --------------- javascript:selectModel('68248') スタイル: RB3025 ------------------------ -------------------- javascript:selectModel('68293') スタイル: RB3026 ------------------- ------------------------- javascript:selectModel('68320') スタイル: RB3044 -------------- ------------------------------ javascript:selectModel('68460') /usr/lib/ruby/1.9.1/net /protocol.rb:146:in
rescue in rbuf_fill': Timeout::Error (Timeout::Error) from /usr/lib/ruby/1.9.1/net/protocol.rb:140:in
rbuf_fill' from /usr/lib/ruby/1.9.1/net/protocol.rb:122:inreaduntil' from /usr/lib/ruby/1.9.1/net/protocol.rb:132:in
readline from /usr/lib/ruby/1.9.1/net/http.rb :2562:でread_status_line' from /usr/lib/ruby/1.9.1/net/http.rb:2551:in
read_new' from /usr/lib/ruby/1.9.1/net/http.rb:1319:inblock in transport_request' from /usr/lib/ruby/1.9.1/net/http.rb:1316:in
catch' from /usr/lib/ruby/1.9.1/net/http.rb:1316:intransport_request' from /usr/lib/ruby/1.9.1/net/http.rb:1293:in
request' from / usr/lib/ruby/1.9.1/net/http.rb:1286:inblock in request' from /usr/lib/ruby/1.9.1/net/http.rb:745:in
start' from /usr/lib/ruby/1.9.1/net/http.rb:1284:inrequest' from /var/lib/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/http/default.rb:82:in
response_for' from /var/lib/ gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/http/default.rb:38:inrequest' from /var/lib/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/http/common.rb:40:in
call' from /var/lib/gems/1.9.1/gems/selenium -webdriver-2.25.0/lib/selenium/webdriver/remote/bridge.rb:598:inraw_execute' from /var/lib/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/bridge.rb:576:in
execute' from /var/lib/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/ webdriver/remote/bridge.rb:554:infind_elements_by' from /var/lib/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/common/search_context.rb:62:in
find_elements から /var/lib/gems/1.9.1/gems/capybara-1.1.2/lib/capybara/selenium/driver.rb:52:infind' from /var/lib/gems/1.9.1/gems/capybara-1.1.2/lib/capybara/node/finders.rb:158:in
find_in_base' from /var/lib/gems/1.9.1/gems/capybara-1.1.2/lib/capybara/node/finders.rb:137:inblock in first' from /var/lib/gems/1.9.1/gems/capybara-1.1.2/lib/capybara/node/finders.rb:136:in
each' from /var/lib/gems/1.9.1/gems /capybara-1.1.2/lib/capybara/node/finders.rb:136:infirst' from /var/lib/gems/1.9.1/gems/capybara-1.1.2/lib/capybara/node/finders.rb:27:in
block in find' from /var/lib/gems/1.9.1/gems/capybara-1.1.2/lib/capybara/node/ base.rb:46:inwait_until' from /var/lib/gems/1.9.1/gems/capybara-1.1.2/lib/capybara/node/finders.rb:27:in
find' from (eval):2:infind' from /var/lib/gems/1.9.1/gems/capybara-1.1.2/lib/capybara/dsl.rb:161:in
find' from /home/biske/workspace/ScrapingGlasses/lib/luxottica.rb:39:inblock in scrape' from /home/biske/workspace/ScrapingGlasses/lib/luxottica.rb:36:in
each' from /home/biske/workspace/ScrapingGlasses/ lib/luxottica.rb:36:inscrape' from /home/biske/workspace/ScrapingGlasses/lib/luxottica.rb:12:in
go' from /home/biske/workspace/ScrapingGlasses/lib/luxottica.rb:48:in `'