2016-12-08 2 views
1

: Ich bin Ruby im Allgemeinen. Ich versuche Capybara mit Selen zu lernen, um Tests für unsere Firmenwebseite durchzuführen.Capybara rspec Skript nicht ausgeführt wird in Blöcken beschreiben

Mein Code arbeitet, bevor ich sie in beschreiben Blöcke setzen. Aber ich musste warten, bis die Seite geladen wurde, nachdem ich mich angemeldet habe. Ich habe etwas recherchiert und festgestellt, dass die Expect-Methode der richtige Weg ist, aber sie funktionieren nur in Blöcken, denke ich. Wenn ich nun ruby ​​testscript.rb starte, öffnet sich der Browser nicht einmal. Unten ist der Code:

require 'timeout' 
require 'capybara' 
require 'capybara/dsl' 
require 'capybara/rspec' 
require 'capybara/rspec/matchers' 
require 'capybara/session/matchers' 
require 'capybara/node/matchers' 

Capybara.default_driver = :selenium 
session = Capybara::Session.new(:selenium) 

describe 'login process', :type => :feature do 
    it 'signs me in' do   
     visit 'https://testwebsite.com' 
     find_by_id('login_form') 
     fill_in('username', with: 'testuser') 
     fill_in('password', with: 'testpw') 
     find_by_id('Login').click 
     expect(page).to have_content('phSearchInput') 
    end 
end 

describe 'search install product', :type => :feature do 
    it 'searches product' do 
     fill_in('phSearchInput', with: '6109302') 
     find_by_id('phSearchButton').click 
     within "SVMXC__Installed_Product__c_body" do 
      click_on "6109302" 
     end 
    end 
end 

Jede Hilfe wird geschätzt. Fühlen Sie sich frei, Alternativen anzubieten, um das Problem beim Laden der Seite zu lösen. Ich möchte nicht schlafen. Vielen Dank!

Antwort

0

Alle describe tut, ist die Tests zu definieren, ist es nicht wirklich, sie laufen. Um die Tests durchführen müssen Sie starten sie mit rspec, so statt ruby testscript.rb müssen Sie

rspec testscript.rb 

Zusätzlich laufen, unter der Annahme, phSearchInput ist die ID eines Eingangs, Ihre Warte Erwartung sein müsste

expect(page).to have_field('phSearchInput') 

oder

expect(page).to have_css('#phSearchInput') 

oder

expect(page).to have_selector(:id, 'phSearchInput') 

have_content (alias für have_text) prüft, ob sichtbaren Text auf der Seite, nicht Elemente.

Ein letzter Kommentar - Capybara wird erstellen eine eigene Standard-Session ist, wenn Sie zu verwenden bedeutet, dass Sie Ihre Session.new Linie entfernen können. Wenn Sie Sitzungen manuell verwalten möchten, müssen Sie alle Capybaras-Methoden für diese Sitzung aufrufen. session.visit(...), session.fill_in(...), expect(session).to ... usw.

+0

Vielen Dank! Es läuft jetzt. Aber ich bekomme einen NoMethodError über "expect". Ich denke, ich habe alles hinzugefügt. Irgendwelche Ideen? Dies ist die Zeile: expect (Seite) .to have_field ('phSearchInput') – shen

+0

@shen Angenommen, Sie verwenden eine moderne Version von RSpec, dann klingt es so, als müssten Sie 'rspec' oder 'rspec/expectations' vor 'capybara/rspec 'und vielleicht auch RSpec konfigurieren. –

+0

Ich habe gerade alles gestern installiert, also glaube ich, dass alles modern sein sollte. Ich habe nicht 'rspec' oder 'rspec/expectation'. Ich habe "Capybara/rspec/matchers" und es ist vor "Capybara/rspec", aber es funktioniert immer noch nicht. Hast du eine Idee? Vielen Dank! – shen

Verwandte Themen