Огурец + селен не получается случайно
Мои тесты на селен, как будто проваливаются случайно. В качестве примера у меня есть этот сценарий
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."
Это, наряду с другими, работает нормально, используя основной режим webrat:rails. В селене, линия
Then I should be editing the user with login "test@example.com"
а также
Then I should be viewing the user with login "test@example.com"
случайный сбой, при этом иногда первый сбой, а в других случаях происходит сбой секунд. Использование сайта вручную приводит к правильной работе, и, как я уже сказал, режим webrat/rails работает нормально.
Рельсы 2.2.2 Огурец 0.3.7 селен 1.1.14 (исправлено для работы с FF3)
Некоторая дополнительная информация:
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
Это соответствующие шаги. Нажатие "Обновить" является стандартным шагом вебрат (click_button)
2 ответа
Изменение шага webrat от
When /^I press "([^\"]*)"$/ do |button|
click_button(button)
end
в
When /^I press "([^\"]*)"$/ do |button|
click_button(button)
selenium.wait_for_page_to_load
end
оно работает. Говоря селену ждать исправления!
Вы смотрели на сроки запросов? Моя интуиция говорит, что селен движется слишком быстро.
Можете ли вы опубликовать свои шаги огурца и сообщения об ошибках и подробности журнала для каждого сбоя?