2009-06-08 11 views
4

Meine Selen-Tests scheitern gerne nach dem Zufallsprinzip. Als Beispiel habe ich dieses SzenarioGurke + Selen scheitert nach dem Zufallsprinzip

Scenario: I should be able to edit a user 
    Given I created a user with the login "[email protected]" 
    And I am viewing the user with login "[email protected]" 
    Then I should see "Edit this user" 
    When I click "Edit this user" 
    Then I should be editing the user with login "[email protected]" 
    When I press "Update" 
    Then I should be viewing the user with login "[email protected]" 
    And I should see "User was successfully updated." 

Dies, zusammen mit den anderen arbeiten den Grund webrat fein mit: Modus Schienen. In Selen, die Linie

Then I should be editing the user with login "[email protected]" 

und

Then I should be viewing the user with login "[email protected]" 

zufällig fehlschlagen, dass manchmal die erste versagt, ein anderes Mal nicht die Sekunden. Die Verwendung der Website von Hand führt zu der richtigen Operation, und wie ich schon sagte, funktioniert der Webrat/Rails-Modus gut.

Rails 2.2.2 Gurke 0.3.7 Selen 1.1.14 (fest mit FF3 arbeiten)

einige zusätzliche Informationen:

Scenario: I should be able to edit a user       # features/admin_priviledges.feature:26 
    Given I created a user with the login "[email protected]"  # features/step_definitions/global_steps.rb:18 
    And I am viewing the user with login "[email protected]"   # features/step_definitions/global_steps.rb:60 
    Then I should see "Edit this user"        # features/step_definitions/webrat_steps.rb:93 
    When I click "Edit this user"         # features/step_definitions/webrat_steps.rb:18 
    Then I should be editing the user with login "[email protected]" # features/step_definitions/global_steps.rb:66 
    expected: "https://stackoverflow.com/users/8/edit", 
     got: "https://stackoverflow.com/users/8" (using ==) 
    Diff: 
    @@ -1,2 +1,2 @@ 
    -/users/8/edit 
    +/users/8 
    (Spec::Expectations::ExpectationNotMetError) 
    features/admin_priviledges.feature:31:in `Then I should be editing the user with login "[email protected]"' 
    When I press "Update"           # features/step_definitions/webrat_steps.rb:14 
    Then I should be viewing the user with login "[email protected]" # features/step_definitions/global_steps.rb:66 
    And I should see "User was successfully updated." 

Then /^I should be (editing|viewing) the (\w+) with (\w+) "([^\"]*)"$/ do |action,model,field,value| 
    func = make_func(action,model) 
    m = find_model_by_field_and_value(model,field,value) 
    URI.parse(current_url).path.should == eval("#{func}(m)") 
end 

Das sind die entsprechenden Schritte. Die Presse "Update" ist ein Standard Webrat Schritt (click_button)

Antwort

7

Ändern eines webrat Schritt von

When /^I press "([^\"]*)"$/ do |button| 
    click_button(button) 
end 

zu

When /^I press "([^\"]*)"$/ do |button| 
    click_button(button) 
    selenium.wait_for_page_to_load 
end 

es funktioniert. Telling Selen, um Fixes zu warten!

2

Haben Sie sich das Timing der Anfragen angesehen? Mein Bauchgefühl sagt, dass Selen sich zu schnell bewegt.

Können Sie Ihre Gurkenschritte und die Fehlermeldungen und Protokolldetails für jeden Fehler posten?

+0

Weitere Informationen hinzugefügt. Kann ich die Geschwindigkeit von Selen aus dem Webrat.configure Block setzen? –

+0

Irgendwelche Lösungen auf diesem? Es scheint, als hätte ich das gleiche Problem. –