这是我的测试,但即使@timeout_exception在代码运行期间有效,它在测试期间也是空的。那么如何测试是否设置了这个变量呢?
Then(/^the output should be '(.*)'$/) do |expectedException|
expect(@timeout_exception).to eq(expectedException)
end
这是捆绑exec黄瓜运行的输出。
And the output should be 'Execution Timeout Error: This deployment has taken too long to run' # features/step_definitions/my_steps.rb:309
expected: "Execution Timeout Error: This deployment has taken too long to run"
got: nil
(compared using ==)
(RSpec::Expectations::ExpectationNotMetError)
./features/step_definitions/my_steps.rb:310:in `/^the output should be '(.*)'$/'
features/timeout_lengthy_deploys.feature:25:in `And the output should be 'Execution Timeout Error: This deployment has taken too long to run''
Failing Scenarios:
cucumber features/timeout_lengthy_deploys.feature:11 # Scenario: Normal deploy that times out because it takes too long
答案 0 :(得分:0)
Selenium有自己的等待,如果它们的设置低于你预期的等待,那么你永远不会看到你的预期等待被触发。有意义吗?
以下设置页面加载的最长等待时间为5秒
@browser.driver.manage.timeouts.page_load = 5
脚本超时是另一种(通常与Ajax一起使用)
@browser.driver.manage.timeouts.script_timeout = 5
@browser.execute_script("return jQuery.active")
隐式等待是Selenium等待元素上的操作完成的最长等待时间。如果这首先触发,那么你的期望就会失败。
@browser.driver.manage.timeouts.implicit_wait = 5
我建议将implicit_wait设置为高于测试之前的超时,然后再将其设置回来。顺便说一句,如果您的超时引发异常,您将需要一个救援区。