2017-08-09 89 views
0

您好我有錯誤,我capybara測試ENV水豚等待Ajax加載

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 

不知道如何解決這個問題?歡迎任何幫助。也許更新鉻驅動程序是必需的,不知道發生了什麼事。

+1

所以jQuery是否在頁面上? –

+0

當我使用poltergist驅動程序時,一切都很好 – vladimirProp

回答

0

wait_for_ajax方法告訴你是專門寫入與鬼驅人使用,並要求jQuery頁面(在水豚::騷靈錯誤搶救,restart_phantomjs等)被加載,所以你不應該使用它與這似乎是是使用Chrome的selenium-webdriver。

還有一個事實是,在正確使用Capybara 2.1+時,99.95%的時間不應該是需要的,因爲它會自動等待元素/文本出現,無論它來自ajax請求還是來自頁面加載應該不重要。結合越來越多的庫直接使用XMLHttpRequest的事實,而通過jQuery意味着wait_for_ajax實際上是不必要的。幾乎唯一的例外是,當你有一個設計不好的UI時,不會向用戶提供關於後臺請求及其效果的反饋,在這種情況下,我會建議修復你的UI。