4

私は最近までうまく動作しているRuby Selenium-Driverスクリプトに問題があります。私はそれが動作しなくなったかもしれない私の環境に行った変更を考えることができません。機密情報があるように私は、値の数を変更したprotocol.rb:153: `read_nonblock ':ファイルの終わりに達しました(EOFError)

#!/usr/bin/env ruby 

require 'capybara' 
require 'selenium-webdriver' 
require 'pry' 
require 'capybara/dsl' 

Capybara.register_driver :chromedriver do |app| 
    Capybara::Selenium::Driver.new(app, :browser => :chrome) 
end 

Capybara.current_driver = :chromedriver 

class BulkDoAction 
    include Capybara::DSL 

    def initialize(file) 
    @value_ids = File.readlines file 
    end 

    def delete(value_id) 

    puts "#{Time.now} -> saving value=#{value_id}" 
    visit "https://www.url.com/#{value_id}/confirmSave" 

    click_button "Save" 
    sleep 5.0 
    end 

    def run 
    visit 'https://www.url.com/login' 

    fill_in 'Email or Username', with: 'XXX' 
    fill_in 'password', with: 'XXX' 
    click_button "Login" 
    sleep 5.0 

    @value_ids.each_with_index do |val_id, idx| 
     puts "Doing #{idx + 1} out of #{@value_ids.size}" 
     delete val_id.to_i 
     sleep 3.0 
    end 
    end 
end 

BulkDoAction.new('test.txt').run 

は、ここでは、コードです。私はこれを実行するたびに

はしかし、私は両方実行したときに、私はこれを取得

/usr/local/Cellar/ruby/2.2.3/lib/ruby/2.2.0/net/protocol.rb:153:in `read_nonblock': end of file reached (EOFError) 
    from /usr/local/Cellar/ruby/2.2.3/lib/ruby/2.2.0/net/protocol.rb:153:in `rbuf_fill' 
    from /usr/local/Cellar/ruby/2.2.3/lib/ruby/2.2.0/net/protocol.rb:134:in `readuntil' 
    from /usr/local/Cellar/ruby/2.2.3/lib/ruby/2.2.0/net/protocol.rb:144:in `readline' 
    from /usr/local/Cellar/ruby/2.2.3/lib/ruby/2.2.0/net/http/response.rb:39:in `read_status_line' 
    from /usr/local/Cellar/ruby/2.2.3/lib/ruby/2.2.0/net/http/response.rb:28:in `read_new' 
    from /usr/local/Cellar/ruby/2.2.3/lib/ruby/2.2.0/net/http.rb:1414:in `block in transport_request' 
    from /usr/local/Cellar/ruby/2.2.3/lib/ruby/2.2.0/net/http.rb:1411:in `catch' 
    from /usr/local/Cellar/ruby/2.2.3/lib/ruby/2.2.0/net/http.rb:1411:in `transport_request' 
    from /usr/local/Cellar/ruby/2.2.3/lib/ruby/2.2.0/net/http.rb:1384:in `request' 
    from /usr/local/Cellar/ruby/2.2.3/lib/ruby/2.2.0/net/http.rb:1377:in `block in request' 
    from /usr/local/Cellar/ruby/2.2.3/lib/ruby/2.2.0/net/http.rb:853:in `start' 
    from /usr/local/Cellar/ruby/2.2.3/lib/ruby/2.2.0/net/http.rb:1375:in `request' 
    from /usr/local/lib/ruby/gems/2.2.0/gems/selenium-webdriver-3.0.0/lib/selenium/webdriver/remote/http/default.rb:103:in `response_for' 
    from /usr/local/lib/ruby/gems/2.2.0/gems/selenium-webdriver-3.0.0/lib/selenium/webdriver/remote/http/default.rb:57:in `request' 
    from /usr/local/lib/ruby/gems/2.2.0/gems/selenium-webdriver-3.0.0/lib/selenium/webdriver/remote/http/common.rb:59:in `call' 
    from /usr/local/lib/ruby/gems/2.2.0/gems/selenium-webdriver-3.0.0/lib/selenium/webdriver/remote/bridge.rb:653:in `raw_execute' 
    from /usr/local/lib/ruby/gems/2.2.0/gems/selenium-webdriver-3.0.0/lib/selenium/webdriver/remote/bridge.rb:124:in `create_session' 
    from /usr/local/lib/ruby/gems/2.2.0/gems/selenium-webdriver-3.0.0/lib/selenium/webdriver/remote/bridge.rb:88:in `initialize' 
    from /usr/local/lib/ruby/gems/2.2.0/gems/selenium-webdriver-3.0.0/lib/selenium/webdriver/chrome/bridge.rb:40:in `initialize' 
    from /usr/local/lib/ruby/gems/2.2.0/gems/selenium-webdriver-3.0.0/lib/selenium/webdriver/common/driver.rb:62:in `new' 
    from /usr/local/lib/ruby/gems/2.2.0/gems/selenium-webdriver-3.0.0/lib/selenium/webdriver/common/driver.rb:62:in `for' 
    from /usr/local/lib/ruby/gems/2.2.0/gems/selenium-webdriver-3.0.0/lib/selenium/webdriver.rb:82:in `for' 
    from /usr/local/lib/ruby/gems/2.2.0/gems/capybara-2.10.1/lib/capybara/selenium/driver.rb:20:in `browser' 
    from /usr/local/lib/ruby/gems/2.2.0/gems/capybara-2.10.1/lib/capybara/selenium/driver.rb:53:in `visit' 
    from /usr/local/lib/ruby/gems/2.2.0/gems/capybara-2.10.1/lib/capybara/session.rb:240:in `visit' 
    from /usr/local/lib/ruby/gems/2.2.0/gems/capybara-2.10.1/lib/capybara/dsl.rb:52:in `block (2 levels) in <module:DSL>' 
    from ./bulk.rb:48:in `run' 
    from ./bulk.rb:63:in `<main>' 

./bulk.rb

私は次の例外を取得しますルビーをインストールし、強制的に2.0.0のシステムルビを実行します。

私の宝石に間違いがあり、スクリプトを読んでいると感じますが、私はそれを理解できません。ここで

は私の宝石のリストは、次のとおりです。

addressable (2.4.0) 
archive-zip (0.7.0) 
bigdecimal (1.2.6) 
capybara (2.10.1) 
childprocess (0.5.9) 
chromedriver-helper (1.0.0) 
coderay (1.1.1) 
ffi (1.9.14) 
io-console (0.4.3) 
io-like (0.3.0) 
json (1.8.1) 
method_source (0.8.2) 
mime-types (3.1) 
mime-types-data (3.2016.0521) 
mini_portile2 (2.1.0) 
minitest (5.4.3) 
multi_json (1.12.1) 
nokogiri (1.6.8.1) 
power_assert (0.2.2) 
pry (0.10.4) 
psych (2.0.8) 
rack (2.0.1) 
rack-test (0.6.3) 
rake (10.4.2) 
rdoc (4.2.0) 
rubyzip (1.2.0) 
selenium-webdriver (3.0.0) 
slop (3.6.0) 
test-unit (3.0.8) 
webdriver-firefox (0.0.15) 
websocket (1.2.3) 
xpath (2.0.0) 

クロムが開き、それが上で立ち往生しているときにだけ明確にするために、私もURLに届かない「データ;」それは端末に例外を投げます。

スクリプトで何も変更されていないので、私の環境と関係があると思います。

誰かがアイデアを持っていれば、私はそれを理解しようとしている間、私は最も感謝しています!

+0

(いっぱいバッファを読む)によるルビープロセスによるネットワークトラフィック/ポート内のブロックに時折発生する可能性があります。シンプルなマシンの再起動は、私のためにこれをほとんど修正しました。試してみる価値があります。 – Sam

+0

提案してくれてありがとうございました。 私は実際には、私が欲求不満になったように、今すべてのことをPythonで書き直しました。 – NinyaEvu

答えて

4

私は同じエラーが見つかりました。私はchromedriverをバージョン2.25(chromedriver_mac64.zip 2016-10-22 06:23:51 4.35MB)にアップグレードしました。

今、完全に正常に動作します。私の経験のrbuf_fillで

https://sites.google.com/a/chromium.org/chromedriver/downloads

+0

お支払い期限が到来しましたので、これで問題は解決しました。 – NinyaEvu

+0

この保存は私の一日、ありがとう –

関連する問題