2016-04-03 10 views
1

Lauf Gurke Tests geben mir zu folgen FehlerGurke Ende der Datei erreicht (EOFError)

end of file reached (EOFError) 
    /usr/lib64/ruby/2.0.0/net/protocol.rb:153:in `read_nonblock' 
    /usr/lib64/ruby/2.0.0/net/protocol.rb:153:in `rbuf_fill' 
    /usr/lib64/ruby/2.0.0/net/protocol.rb:134:in `readuntil' 
    /usr/lib64/ruby/2.0.0/net/protocol.rb:144:in `readline' 
    /usr/lib64/ruby/2.0.0/net/http/response.rb:39:in `read_status_line' 
    /usr/lib64/ruby/2.0.0/net/http/response.rb:28:in `read_new' 
    /usr/lib64/ruby/2.0.0/net/http.rb:1406:in `block in transport_request' 
    /usr/lib64/ruby/2.0.0/net/http.rb:1403:in `catch' 
    /usr/lib64/ruby/2.0.0/net/http.rb:1403:in `transport_request' 
    /usr/lib64/ruby/2.0.0/net/http.rb:1376:in `request' 
    /usr/lib64/ruby/2.0.0/net/http.rb:1369:in `block in request' 
    /usr/lib64/ruby/2.0.0/net/http.rb:852:in `start' 
    /usr/lib64/ruby/2.0.0/net/http.rb:1367:in `request' 
    ./features/step_definitions/my_steps.rb:110:in `block (2 levels) in <top (required)>' 
    ./features/step_definitions/my_steps.rb:58:in `each' 
    ./features/step_definitions/my_steps.rb:58:in `/^action$/' 
    features/myFeature.feature:18:in `Then I should XY' 
    Connection refused - connect(2) (Errno::ECONNREFUSED) 
    /usr/lib64/ruby/2.0.0/net/http.rb:878:in `initialize' 
    /usr/lib64/ruby/2.0.0/net/http.rb:878:in `open' 
    /usr/lib64/ruby/2.0.0/net/http.rb:878:in `block in connect' 
    /usr/lib64/ruby/2.0.0/timeout.rb:66:in `timeout' 
    /usr/lib64/ruby/2.0.0/net/http.rb:877:in `connect' 
    /usr/lib64/ruby/2.0.0/net/http.rb:862:in `do_start' 
    /usr/lib64/ruby/2.0.0/net/http.rb:851:in `start' 
    /usr/lib64/ruby/2.0.0/net/http.rb:1367:in `request' 
    ./features/support/env.rb:45:in `After' 

Mein gemlist von Bundle:

* activemodel (4.2.6) 
* activerecord (4.2.6) 
* activesupport (4.2.6) 
* addressable (2.4.0) 
* arel (6.0.3) 
* builder (3.2.2) 
* bundler (1.6.5) 
* capybara (2.6.2) 
* childprocess (0.5.9) 
* cucumber (2.3.3) 
* cucumber-core (1.4.0) 
* cucumber-wire (0.0.1) 
* data_magic (0.22) 
* diff-lcs (1.2.5) 
* faker (1.6.3) 
* ffi (1.9.10) 
* gherkin (3.2.0) 
* headless (2.2.3) 
* i18n (0.7.0) 
* json (1.8.3) 
* mime-types (3.0) 
* mime-types-data (3.2016.0221) 
* mini_portile2 (2.0.0) 
* minitest (5.8.4) 
* multi_json (1.11.2) 
* multi_test (0.1.2) 
* mysql2 (0.4.3) 
* nokogiri (1.6.7.2) 
* page-object (1.1.1) 
* page_navigation (0.9) 
* rack (1.6.4) 
* rack-test (0.6.3) 
* rspec (3.4.0) 
* rspec-core (3.4.4) 
* rspec-expectations (3.4.0) 
* rspec-mocks (3.4.1) 
* rspec-support (3.4.1) 
* rubyzip (1.2.0) 
* selenium-webdriver (2.53.0) 
* snapurl (0.0.3) 
* syntax (1.2.0) 
* thread_safe (0.3.5) 
* tzinfo (1.2.2) 
* watir-webdriver (0.9.1) 
* websocket (1.2.2) 
* xpath (2.0.0) 
* yml_reader (0.7) 
* zip-zip (0.3) 

OS: openSuSE 13.1 Browser: Firefox 45.0

Der Fehler tritt innerhalb einer Schleife (nach 1 bis 2 Minuten) auf, egal ob ich den Firefox sehe oder ihn kopflos laufen lasse.

Step-Code (von Pastebin Link in den Kommentaren)

Then /^I should XY$/ do 
    today = Date.today 
    heute = today.to_s.sub(/(\w+)-(\w+)-(\w+)/, '\\3.\\2.\\1') 
    letzter_tag = Date.today.end_of_month 
    differenz = letzter_tag - today 
    ueber_naechster_monats_beginn = Date.today.at_beginning_of_month.next_month.next_month 
    deutscher_ueber_naechster_monats_beginn = ueber_naechster_monats_beginn.to_s.sub(/(\w+)-(\w+)-(\w+)/, '\\3.\\2.\\1') 
    puts 'Heute ist das Datum: '+today.to_s 
    puts 'Der letzte Tag des aktuellen Monats ist: '+letzter_tag.to_s 
    puts 'Bis zum letzten Tag des aktuellen Monats sind es noch: '+differenz.to_s+' Tage' 
    if differenz < 9 || differenz < 0 
    puts "Der Monatswechsel liegt an, das neue Datum für den Monatsbeginn ist: "+ueber_naechster_monats_beginn.to_s 
    else 
    puts "Kein Monatswechsel liegt an." 
    end 
    tabellen_zeilen = @browser.table(:id => 'tabellenanfang').tbody.rows 
    puts tabellen_zeilen.count.to_s+' Tabellenzeilen gefunden' 
    link_list_2_mit_monats_wechsel = Array.new 
    link_list_2_ohne_monats_wechsel = Array.new 
    link_list_2 = Array.new 
    link_list_1 = Array.new 
    tabellen_zeilen.each do |tabellen_zeile| 
    if !tabellen_zeile.cell(:index => 2).div.text.include?("nicht veröffentlicht") 
     link_list_2 << tabellen_zeile.cell(:index => 0).div.a.text 
     puts 'veröffentlicht: '+tabellen_zeile.cell(:index => 0).div.a.text 
     beginn_datum = Date.parse(tabellen_zeile.cell(:index => 3).div.text) 
     puts ' Beginn Datum ist: '+beginn_datum.to_s 
     aktuelle_differenz = beginn_datum - today 
     puts ' ' 
     # 
     if aktuelle_differenz < 10 || aktuelle_differenz < 0 
     link_list_2_mit_monats_wechsel << tabellen_zeile.cell(:index => 0).div.a.text 
     puts " " 
     else 
     link_list_2_ohne_monats_wechsel << tabellen_zeile.cell(:index => 0).div.a.text 
     puts " " 
     end 
    else 
     link_list_1 << tabellen_zeile.cell(:index => 0).div.a.text 
     puts ' ' 
    end 
    end 
    puts ' ' 
    link_list_2.each { |link_text| 
    puts '____________________________________________________________________________________________' 
    puts '' 
    puts link_text 
    puts '' 
    puts '____________________________________________________________________________________________' 
    link = @browser.link(:text => link_text) 
    begin 
     link.click 
    rescue Watir::Exception::UnknownObjectException => i #catch the Exception 
     @browser.refresh 
     link.wait_until_present(600) 
     link.click 
     puts "Objekt konnte nicht geklickt werden: #{i}" 
    end 
    puts ' Link geöffnet' 
    begin 
     @browser.input(:id => 'tab1').wait_until_present(600) 
     @browser.input(:id => 'tab1').click 
    rescue Watir::Exception::UnknownObjectException, TimeoutError => j #catch the Exception 
     @browser.refresh 
     @browser.input(:id => 'tab1').wait_until_present(600) 
     @browser.input(:id => 'tab1').click 
     puts "Objekt konnte nicht geklickt werden: #{j}" 
    end 
    puts ' ' 
    @browser.element(:id => 'begin_field').wait_until_present(600) 
    @browser.element(:id => 'begin_field').exists?.should == true 
    @browser.text_field(:id => 'begin_field').set heute 
    @browser.element(:id => 'speichern_unten').wait_until_present(100) 
    @browser.input(:id => 'speichern_unten').click 
    begin 
     @browser.input(:id => 'tab2').click 
    rescue Watir::Exception::UnknownObjectException => e #catch the Exception 
     @browser.refresh 
     @browser.input(:id => 'tab2').wait_until_present(100) 
     @browser.input(:id => 'tab2').click 
     puts "Objekt konnte nicht geklickt werden: #{e}" 
    end 
    puts ' ' 
    begin 
     @browser.element(:id => 'begin_date').wait_until_present(100) 
     @browser.element(:id => 'begin_date').exists?.should == true 
     @browser.text_field(:id => 'begin_date').set heute 
    rescue Watir::Exception::UnknownObjectException, TimeoutError => l #catch the Exception 
     @browser.refresh 
     @browser.element(:id => 'begin_date').wait_until_present(100) 
     @browser.element(:id => 'begin_date').exists?.should == true 
     @browser.text_field(:id => 'begin_date').set heute 
    end  
    begin 
     @browser.element(:id => 'speichern_unten').wait_until_present(600) 
     @browser.input(:id => 'speichern_unten').click 
    rescue Watir::Exception::UnknownObjectException, TimeoutError => h #catch the Exception 
     puts "Objekt konnte nicht geklickt werden: #{h}" 
     @browser.refresh 
     @browser.element(:id => 'speichern_unten').wait_until_present(600) 
     @browser.input(:id => 'speichern_unten').click 
    end  
    begin 
     @browser.element(:id => 'tab1').wait_until_present(600) 
     @browser.input(:id => 'tab1').click 
    rescue Watir::Exception::UnknownObjectException, TimeoutError => g #catch the Exception 
     puts "Objekt konnte nicht geklickt werden: #{g}" 
     @browser.refresh 
     @browser.element(:id => 'tab1').wait_until_present(600) 
     @browser.input(:id => 'tab1').click 
    end 
    puts ' ' 
    begin 
     @browser.element(:id => 'begin_field').wait_until_present(600) 
    rescue Watir::Wait::TimeoutError => k 
     puts "Objekt konnte nicht geklickt werden: #{k}" 
     @browser.refresh 
     @browser.element(:id => 'begin_field').wait_until_present(600) 
    end 
    @browser.element(:id => 'begin_field').exists?.should == true 
    @browser.element(:id => 'begin_field').html.include?(heute).should == true 
    @browser.element(:id => 'tab2').wait_until_present(600) 
    @browser.input(:id => 'tab2').click 
    begin 
     @browser.element(:id => 'begin_date').wait_until_present(100) 
    rescue Watir::Wait::TimeoutError => f 
     puts "Objekt konnte nicht geklickt werden: #{f}" 
     @browser.refresh 
     @browser.element(:id => 'begin_date').wait_until_present(100) 
    end 
    @browser.element(:id => 'begin_date').exists?.should == true 
    @browser.element(:id => 'begin_date').html.include?(heute).should == true 
    puts ' neuer Veröffentlichungszeitraum auf '+heute+' gesetzt' 
    @browser.link(:text => 'buttonText').click 
    puts '____________________________________________________________________________________________' 
    puts '' 
    } 
    puts ' ' 
    puts "----------------------------------------------------------------------------------------------" 
    puts ' ' 
    puts ' ' 
    puts ' ' 
    puts ' ' 
    link_list_2_mit_monats_wechsel.each { |monats_wechsel_link_text| 
    puts '____________________________________________________________________________________________' 
    puts '' 
    puts monats_wechsel_link_text 
    puts '' 
    puts '____________________________________________________________________________________________' 
    link = @browser.link(:text => monats_wechsel_link_text) 
    link.click  
    puts ' Link geöffnet' 
    @browser.input(:id => 'tab3').click 
    puts ' Reiter 1 Stelleninfo geöffnet' 
    @browser.element(:id => 'dateField').wait_until_present(600) 
    @browser.element(:id => 'dateField').exists?.should == true 
    puts ' ' 
    @browser.text_field(:id => 'dateField').set deutscher_ueber_naechster_monats_beginn 
    @browser.input(:id => 'speichern_unten').click 
    sleep 1 
    @browser.input(:id => 'tab1').click 
    sleep 1 
    @browser.input(:id => 'tab3').click 
    puts ' Reiter 1 Stelleninfo zur Kontrolle geöffnet' 
    sleep 1 
    @browser.element(:id => 'dateField').wait_until_present(600) 
    @browser.element(:id => 'dateField').exists?.should == true 
    @browser.element(:id => 'dateField').html.include?(deutscher_ueber_naechster_monats_beginn).should == true 
    puts ' ' 
    @browser.link(:text => 'buttonText').click 
    puts '____________________________________________________________________________________________' 
    puts ' ' 
    } 
    puts ' ' 
end 

env.rb (von Pastebin Link in den Kommentaren)

#!/bin/env ruby 
# encoding: utf-8 
# -*- coding: utf-8 -*- 
require 'rubygems' 
require 'capybara' 
# active_support wird fuer die Funktion end_of_month benoetigt 
require 'active_support' 
require 'active_support/core_ext' 
require 'minitest' 
require 'minitest/autorun' 
require 'rspec/expectations' 
require 'capybara/rspec' 
require 'capybara/cucumber' 
#require 'ruby_gntp' 
require 'net/http' 
#require 'escape_utils' 
require 'watir-webdriver' 
require 'page-object/page_factory' 
World(PageObject::PageFactory) 
require 'headless' 
client = Selenium::WebDriver::Remote::Http::Default.new 
client.timeout = 600 # seconds – default is 60 
Capybara.run_server = true #Whether start server when testing 
Capybara.default_selector = :css #default selector , you can change to :css 
Capybara.default_max_wait_time = 180 #When we testing AJAX, we can set a default wait time 
Capybara.ignore_hidden_elements = false #Ignore hidden elements when testing, make helpful when you hide or show elements using javascript 

Before do 
    @headless = Headless.new() 
    @headless.start 
    $DEBUG = true 

    #profile = Selenium::WebDriver::Firefox::Profile.new 
    @browser = Watir::Browser.new :firefox, :http_client => client 
    #@browser = Watir::Browser.new 
    @browser.window.resize_to(2250, 1024) 
end 


After do 
    @headless.destroy 
    #@browser.close 
end 

Was könnte ich versuchen?

+0

Zeigen Sie den Schritt mit dem Fehler an. –

+0

hier ist mein Schritt, Zeile 1 ist Zeile 15 in meinem Skript: http://pastebin.com/Z7LEw2Lk – Hedwig5

+0

Der Fehler tritt die meiste Zeit beim Ausführen der zweiten oder dritten Index in der Schleife – Hedwig5

Antwort

0

Ich habe gerade herausgefunden. In Ihrer env.rb richten Sie Capybara ein, aber Sie erstellen einen Browser mit Hilfe von watir. Das ist nicht gut, weil Capybara und Watir gleichzeitig einen Konflikt auslösen können. Schalte Capybara aus. Benutze nur watir. Stellen Sie nicht "Capybara", um zu verlangen. Das ist viel mehr guter Vorschlag als mein Vorschlag in einem Kommentar. Aber ich bin mir immer noch nicht 100% sicher. Versuch es bitte.

+0

Vereinbart, würde ich entweder Watir-Webdriver oder Capybara verwenden, um den Browser zu fahren, aber nicht beides auf einmal. –

+0

Die Durchführung des Tests ohne Capybara hat nicht geholfen, auch wenn ich den Test auf 2 Klicks innerhalb der Iteration reduziert es :(Doing keinen Klick, nur den Link Text ist in Ordnung. – Hedwig5

+0

Nun. Jetzt habe ich keine Ideen. Bitte posten Sie die letzte Version von env.rb und Ihren Code und ich werde noch einmal darüber nachdenken. – Antesser

Verwandte Themen