Охотник - это не место, где происходит волшебство. Магия происходит в файлах определения шага, где вы используете Ruby, selenium, RSpec и другие технологии (например, Capybara) для создания желаемого поведения. Поэтому, чтобы перефразировать ваш вопрос: «Как я могу проверить исключение тайм-аута, учитывая реализацию огурца, рубина, RSpec и селена?»
Selenium имеет концепцию неявных ожиданий. То есть, продолжительность, в течение которой селен повторяет операцию до объявления отказа. Вы можете контролировать неявные ожидания, установив следующее в вашем env.rb:
# Set the amount of time the driver should wait when searching for elements
driver.manage.timeouts.implicit_wait = 20
# Sets the amount of time to wait for an asynchronous script to finish
# execution before throwing an error. If the timeout is negative, then the
# script will be allowed to run indefinitely.
driver.manage.timeouts.script_timeout = 20
# Sets the amount of time to wait for a page load to complete before throwing an error.
# If the timeout is negative, page loads can be indefinite.
driver.manage.timeouts.page_load = 20
Единицы секунды. Вам нужно будет установить implicit_wait выше, чем ваш тайм-аут «Err, timeout, ouch». Думать.
Я считаю, что WebDriver выбрасывает Ошибка :: TimeOutError, когда время ожидания превышает. Ваш код бросает, что? Тайм-аут :: Ошибка? Таким образом, в секциях спасательными:
Given(/^ .... $/ do
...
rescue Error::TimeOutError => e
@timeout_exception = "Error::TimeOutError"
end
rescue Timeout::Error => f
@timeout_exception = "Err, timeout, ouch"
end
end
Then(/^the output should be 'Err, timeout, ouch'$/) do |expectedException|
expect(@timeout_exception).to eq(expectedException), "Err, timeout, ouch"
end
выше предполагает, что вы используете RSpec/исключения, т.е. RSpec 3.
Как отразить тайм-аута :: Ошибка интерфейса вашего приложения? –
Из любопытства вы используете тестовый инструмент/упряжь, например 'minitest' или' rspec' вместе с ruby и 'cucumber'? – orde
orde, я бегу его с огурцом! – Dennis