2012-09-07 31 views
1

在我的要求规范(webdriver的规范),我有以下几点:超时的要求规范评估JS时

page.evaluate_script("$('#open-modal').click();") 

它点击按钮,但随后超时一旦模式是开放的。我得到:

Failure/Error: page.evaluate_script("$('#open-modal').click();") 
Timeout::Error: 
    Timeout::Error 

它使用Twitter Bootstrap模式。我怎样才能让它继续执行spec/not timeout?

(在我不能只是做click_on原因是因为该元素是屏幕外)

回答

0

你可以做类似

begin 
    # Your spec 
rescue Timeout::Error 
    puts("I failed because of a timeout error") 
    assert(false) 
end 

,可随时更换puts语句一些代码,吐出来的消息无论你的测试框架是

+1

这确实可以防止它引发异常。不幸的是,它仍然会持续一分钟左右。任何想法如何我可以完全避免超时? – bevanb

+1

我不认为你可以简单地做到这一点。你也许可以调用一个定时函数,并设置一个变量,在你想要的每个函数中检查。你将不得不使用'Time.now'来设置一个变量,然后检查整个代码。我认为这可能是可能的,但会变得非常混乱。我会尝试重构测试,以便它不依赖于JavaScript,并用Jasmine之类的东西来测试JavaScript –