У меня есть сценарий автоматизации Ruby, который использовался для работы с selenium-webdriver и watir-webdriver в Linux.Ошибка в Ruby web автоматизации
Несколько дней назад один из моих сценариев разбился, и с тех пор веб-автоматики перестали работать.
теперь я получаю следующее сообщение об ошибке:
Headless display: :99
D, [2016-11-22T12:59:42.668070 #16284] DEBUG -- : end of file reached (EOFError)
/home/batch/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/net/protocol.rb:153:in `read_nonblock'
/home/batch/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/net/protocol.rb:153:in `rbuf_fill'
/home/batch/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/net/protocol.rb:134:in `readuntil'
/home/batch/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/net/protocol.rb:144:in `readline'
/home/batch/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/net/http/response.rb:39:in `read_status_line'
/home/batch/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/net/http/response.rb:28:in `read_new'
/home/batch/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/net/http.rb:1414:in `block in transport_request'
/home/batch/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/net/http.rb:1411:in `catch'
/home/batch/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/net/http.rb:1411:in `transport_request'
/home/batch/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/net/http.rb:1384:in `request'
/home/batch/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/net/http.rb:1377:in `block in request'
/home/batch/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/net/http.rb:853:in `start'
/home/batch/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/net/http.rb:1375:in `request'
/home/batch/.rvm/gems/ruby-2.2.1/gems/selenium-webdriver-3.0.1/lib/selenium/webdriver/remote/http/default.rb:103:in `response_for'
/home/batch/.rvm/gems/ruby-2.2.1/gems/selenium-webdriver-3.0.1/lib/selenium/webdriver/remote/http/default.rb:57:in `request'
/home/batch/.rvm/gems/ruby-2.2.1/gems/selenium-webdriver-3.0.1/lib/selenium/webdriver/remote/http/common.rb:59:in `call'
/home/batch/.rvm/gems/ruby-2.2.1/gems/selenium-webdriver-3.0.1/lib/selenium/webdriver/remote/bridge.rb:653:in `raw_execute'
/home/batch/.rvm/gems/ruby-2.2.1/gems/selenium-webdriver-3.0.1/lib/selenium/webdriver/remote/bridge.rb:124:in `create_session'
/home/batch/.rvm/gems/ruby-2.2.1/gems/selenium-webdriver-3.0.1/lib/selenium/webdriver/remote/bridge.rb:88:in `initialize'
/home/batch/.rvm/gems/ruby-2.2.1/gems/selenium-webdriver-3.0.1/lib/selenium/webdriver/chrome/bridge.rb:41:in `initialize'
/home/batch/.rvm/gems/ruby-2.2.1/gems/selenium-webdriver-3.0.1/lib/selenium/webdriver/common/driver.rb:61:in `new'
/home/batch/.rvm/gems/ruby-2.2.1/gems/selenium-webdriver-3.0.1/lib/selenium/webdriver/common/driver.rb:61:in `for'
/home/batch/.rvm/gems/ruby-2.2.1/gems/selenium-webdriver-3.0.1/lib/selenium/webdriver.rb:82:in `for'
test.rb:18:in `<main>'
Я попытался переустановить оба селен WebDriver и Watir-WebDriver драгоценных камней, и это не помогло.
Я сравнивал все файлы .rb в сообщении об ошибке с файлами на производственном сервере, и они точно такие же.
Вот код теста, я бегу:
#!/bin/ruby
require 'rubygems'
require 'watir-webdriver'
require 'selenium-webdriver'
require 'headless'
require 'logger'
headless = Headless.new(autopick: true, reuse: false, destroy_at_exit: true).start
puts "Headless display: #{ENV['DISPLAY']}"
logger = Logger.new(STDOUT)
logger.level = Logger::DEBUG
begin
client = Selenium::WebDriver::Remote::Http::Default.new
client.timeout = 600 # seconds - default is 60
d = Selenium::WebDriver.for :chrome, :http_client => client, :switches => %w[--disable-popup-blocking --disable-translate]
b = Watir::Browser.new d
saved_cookies = b.cookies.to_a
site_url = 'https://www.google.com/'
puts site_url
b.goto site_url
sleep 2
b.close
exit
rescue => err
logger.debug(err)
end
Этот код отлично на других серверах работает. Чувствуется, что что-то испортилось, но я не могу понять, что.
Благодарим за сообщение. Как я уже говорил, эта среда работала несколько дней назад. Я не могу внести изменения, которые вы предлагаете, поскольку среда разработки должна соответствовать производственной. – Andrey
Какая версия Chrome и какая версия хромирования? Большинство EOFError, которые я видел, являются результатом несоответствующих версий. Я не понимаю проблему с разработчиком и производством, так как оба будут независимы от того, как вы тестируете Black-box с помощью Selenium. – titusfortner
Во время обновления ОС версии нескольких модулей и Chrome вышли из синхронизации. После того, как все было доведено до правильных версий, Ruby начал работать правильно. Спасибо. – Andrey