2009-06-08 7 views
4

Мои тесты на селен, как неудача случайным образом. В качестве примера я имею этот сценарийОгурцы + селен случайным образом недействительны

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

Это, наряду с другими, работают отлично, используя основной Webrat: режим рельсам. В селена, линия

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

и

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

неудачу случайным образом, в том, что иногда первым выходит из строя, другие времена секунды терпит неудачу. Использование веб-сайта вручную приводит к правильной работе, и, как я уже сказал, режим webrat/rails работает нормально.

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

Те соответствующие шаги. Пресса «Обновить» является стандартным шагом webrat (click_button)

ответ

7

Изменение шага 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 

он работает. Рассказать селену, чтобы ждать исправления!

2

Вы посмотрели сроки запросов? Моя кишка говорит, что селен движется слишком быстро.

Можете ли вы опубликовать свои шаги огурца и сообщения об ошибках и данные журнала для каждого отказа?

+0

Добавлена ​​дополнительная информация. Могу ли я установить скорость селена из блока Webrat.configure? –

+0

Какие-нибудь решения? Похоже, у меня такая же проблема. –