您好我的capybara
测试环境
unknown error: jQuery is not defined
(Session info: chrome=43.0.2357.125)
我认为这与ajax等待功能相关
def wait_for_ajax
Timeout.timeout(Capybara.default_wait_time) do
element = false
until element do
begin
sleep(0.05)
count = 0
begin
element = page.evaluate_script('jQuery.active') == 0
rescue Errno::ECONNRESET => e
count += 1
restart_phantomjs
retry unless count > RETRY_COUNT_ERROR_CONNECT
rescue Capybara::Poltergeist::DeadClient
count += 1
restart_phantomjs
retry unless count > RETRY_COUNT_ERROR_CONNECT
rescue Capybara::Poltergeist::JavascriptError
end
end
end
end
end
知道如何解决这个问题吗?欢迎任何帮助。也许需要更新chrome驱动程序,不确定是什么。
答案 0 :(得分:0)
您显示的wait_for_ajax
方法专门用于与Poltergeist一起使用,并且需要在页面中加载jQuery
(Capybara :: Poltergeist错误抢救,restart_phantomjs等)所以你不应该使用Chrome看起来像selenium-webdriver一样使用它。
还有一个事实是,在使用Capybara 2.1+的情况下99%的时间不需要wait_for_ajax
,因为它会自动等待元素/文字出现如此它是来自ajax请求还是页面加载都不重要。结合越来越多的库直接使用XMLHttpRequest,而不是通过jQuery意味着wait_for_ajax
实际上是不必要的。几乎唯一的例外是当你的设计设计糟糕时,不向用户提供有关后台请求及其效果的反馈,在这种情况下,我建议修复你的用户界面。