私は最近までうまく動作している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に届かない「データ;」それは端末に例外を投げます。
スクリプトで何も変更されていないので、私の環境と関係があると思います。
誰かがアイデアを持っていれば、私はそれを理解しようとしている間、私は最も感謝しています!
(いっぱいバッファを読む)によるルビープロセスによるネットワークトラフィック/ポート内のブロックに時折発生する可能性があります。シンプルなマシンの再起動は、私のためにこれをほとんど修正しました。試してみる価値があります。 – Sam
提案してくれてありがとうございました。 私は実際には、私が欲求不満になったように、今すべてのことをPythonで書き直しました。 – NinyaEvu