2009-06-08 4 views
4

Mes tests de sélénium comme à échoue au hasard. À titre d'exemple, j'ai ce scénarioconcombre + sélénium échoue au hasard

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." 

Ceci, ainsi que les autres, fonctionnent bien en utilisant la base Webrat: rails en mode. En sélénium, la ligne

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

et

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

échouent au hasard dans la mesure où parfois le premier échoue, d'autres fois les secondes échoue. L'utilisation du site par les résultats de la main dans le bon fonctionnement, et comme je l'ai dit, le mode Webrat/rails fonctionne très bien.

Rails 2.2.2 concombre 0.3.7 sélénium 1.1.14 (fixé à travailler avec FF3)

Quelques infos supplémentaires:

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 

Ce sont les étapes pertinentes. La presse « Mise à jour » est une étape standard Webrat (de click_button)

Répondre

7

Modification d'une étape de Webrat de

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

à

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

cela fonctionne. Raconter du sélénium pour attendre des corrections!

2

Avez-vous regardé le calendrier des demandes? Mon instinct dit que c'est que le sélénium se déplace trop vite.

Pouvez-vous poster vos étapes de concombre et les messages d'erreur et connectez-vous les détails pour chaque échec?

+0

Ajout de plus d'informations. Puis-je définir la vitesse du sélénium à partir du bloc Webrat.configure? –

+0

Des solutions là-dessus? Il semble que j'ai le même problème. –