2012-04-02 16 views
0

Ich habe versucht, mit Gurke und Watir zu beginnen. Ich habe die Installation gemacht und ein einfaches "Feature" geschrieben/kopiert. Ich komme jedoch nirgendwohin, indem ich überprüfe, was auf einer Seite ist.Werte mit Gurke und Watir überprüfen

Das ist meine Funktion:

Feature: Suchen Google Um sicher, die Menschen machen kann meine Dokumentation Ich möchte überprüfen es aufgeführt wird auf der ersten Seite in Google

Scenario: Searching for JS.Class docs 
    Given I have opened "http://www.google.com/" 
    When I search for "JS.Class" 
    Then I should see a link to "http://jsclass.jcoglan.com/" with text "JS.Class v3.0" 

My env finden .rb Datei sieht wie folgt aus

require 'watir' 
require 'rspec' 

Und das ist mein search_steps.rb

@ie 

Given /^I have opened "([^\"]*)"$/ do |url| 
    @ie = Watir::IE.new 
    @ie.goto(url) 
end 

When /^I search for "([^\"]*)"$/ do |arg1| 
    @ie.text_field(:name, "q").set(arg1) 
    @ie.button(:name, "btnG").click 
end 

Then /^I should see a link to "([^\"]*)" with text "([^\"]*)"$/ do |arg1, text| 
    puts arg1 

    # @ie.text.should include(arg1) 
    @ie.close 
end 

Wenn ich die Zeile'@ie.text.should include (arg1) 'auskommentiere, bekomme ich diesen Fehler geworfen.

Then I should see a link to "http://jsclass.jcoglan.com/" with text "JS.Class v3.0" # features/step_definitions/search_steps.rb:13 
    true 
    undefined method `split' for ["http://jsclass.jcoglan.com/"]:Array (NoMethodError) 
    ./features/step_definitions/search_steps.rb:17:in `/^I should see a link to "([^\"]*)" with text "([^\"]*)"$/' 

    features\search.feature:8:in `Then I should see a link to "http://jsclass.jcoglan.com/" with text "JS.Class v3.0"' 

Failing Szenarien: Gurke Features \ search.feature: 5 # Szenario: Die Suche nach JS.Class docs

Gerade jetzt die dann Funktion wird ihre Arbeit nicht tun. Wenn ich die Zeile auszeichne, schreibt sie nur etwas Text.

Die Edelsteine ​​habe ich gehören die folgenden Gurke < 1.1.9>, rspec < 2.9.0>, watir < 2.0.4> und watir-WebDriver < 0.5.3>

Die Version von Rubin Ich habe ist: Rubin 1.9.3p125.

Ich führe dies auf Windows 7 Ultimate.

Ich frage mich, ob ich ein Juwel oder etwas vermisse. Das Lesen der Nachricht impliziert, dass ich eine Methode anrufe, die sie nicht finden kann, aber ich habe einige Seiten im Web gefunden, die diese Methode verwenden.

Jede Hilfe, Anleitung oder Hinweise in die richtige Richtung sind dankbar willkommen.

+1

Können Sie Gurke mit den '--backtrace' Schaltern und Post bis die vollständige Fehlermeldung ausgeführt werden? Es sollte eine bessere Vorstellung davon geben, woher die Ausnahme kommt. –

Antwort

2

Das Problem ist, wenn Sie (manuell) den Text der Google-Suchergebnisse betrachten, werden Sie feststellen, dass es keinen Text "http://jsclass.jcoglan.com/" gibt. Wie erwartet wird der Test daher fehlschlagen.

Um dies zu beheben, können Sie den Anruf zu dem Schritt korrigieren, indem das Entfernen ‚http: //‘:

Then I should see a link to "jsclass.jcoglan.com/" with text "JS.Class v3.0" 

Das heißt, es wäre robuster sein, wenn Sie tatsächlich Prüfung für den Link machen mit der folgende Code Überprüfen, dass der Text irgendwo auf der Seite ist, kann zu falschen Positiven führen (siehe Neuester Beitrag am WatirMelon)

@ie.link(:url => arg1, :text => text).exists?.should be true 
+0

Hallo Justin, Danke für die Antwort. Ich hatte zunächst ie.html statt ie.text verwendet. Anfänger Fehler. Ich habe versucht, den von Ihnen vorgeschlagenen Code zu verwenden, aber der folgende Fehler wird ausgegeben. "Verglichen mit der Verwendung von Gleichheit ?, die die Objektidentität vergleicht, aber erwartet und tatsächlich nicht dasselbe Objekt ist. Verwenden Sie 'tatsächlich'.sollte == erwartet werden, wenn Sie sich in diesem Beispiel nicht um die Objektidentität kümmern. "Dies lässt mich denken, dass es sich um den Typ des" tatsächlichen "Objekts handelt. Ich habe das" sein "in" == "geändert, aber ich empfange ein anderer Fehler –

+0

Seltsam, der Code funktionierte für mich.Ich habe jedoch eine vollständige Deinstallation und neu installiert nur die Edelsteine, die Sie erwähnt haben, und jetzt bekomme ich den Fehler. Vielleicht war es wegen mir mehrere rspec Versionen installiert? Jedenfalls werde ich einen Blick darauf werfen .. –

+0

Was ist der Fehler, den Sie bekommen, wenn Sie '==' verwenden? Der Test wird für mich übergeben, sobald ich diese Änderung vornehmen. –