Cucumber + selenium randomly

My tests for selenium seem to fail at random. As an example, I have this script

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

This, along with others, works fine using the main webrat: rails mode. In selenium line

 Then I should be editing the user with login " test@example.com " 

and

 Then I should be viewing the user with login " test@example.com " 

randomly generated when sometimes the first failure occurs and the others fail. Using the website manually leads to the correct operation, and, as I said, the webrat / rails mode works fine.

Rails 2.2.2 Cucumbers 0.37 selenium 1.1.14 (fixed for working with FF3)

Additional Information:

 Scenario: I should be able to edit a user # features/admin_priviledges.feature:26 Given I created a user with the login " test@example.com " # features/step_definitions/global_steps.rb:18 And I am viewing the user with login " test@example.com " # 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 " test@example.com " # features/step_definitions/global_steps.rb:66 expected: "/users/8/edit", got: "/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 " test@example.com "' When I press "Update" # features/step_definitions/webrat_steps.rb:14 Then I should be viewing the user with login " test@example.com " # 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 

These are appropriate steps. Press Update is a standard webrat step (click_button)

+4
source share
2 answers

Change webrat step from

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

to

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

it works. Speak selena to wait for correction!

+7
source

Have you looked at the request time? My gut says selenium is moving too fast.

Can you post your cucumber steps, as well as error messages and log data for each failure?

+2
source

Source: https://habr.com/ru/post/1285917/


All Articles