8

Tôi đang cố viết thông số yêu cầu cho một trang web.Lỗi phản hồi không hợp lệ của weby Capybara, cách gỡ lỗi?

Trang này hoạt động trong quá trình phát triển mà không có lỗi.

Nhưng chạy trong Capybara webkit tôi nhận được lỗi này sau khi cố gắng gửi biểu mẫu:

Failure/Error: Unable to find matching line from backtrace 
Capybara::Driver::Webkit::WebkitInvalidResponseError: 
    Unable to load URL: https://127.0.0.1:33416/sign_in 

Trong một nỗ lực để tìm ra nguyên nhân tôi đã bắt đầu tước ra đánh dấu và JavaScript trên trang. Đến điểm mà nó là một biểu mẫu rỗng với một nút gửi đơn giản. Tôi vẫn nhận được lỗi ở trên!

Bài kiểm tra là tại nghĩa đen:

it "should be able create a new foo", :js, :focus do 
    visit new_foo_path 
    find('#submit').click 
end 

Kiểm tra này tuy nhiên có tác dụng nếu tôi tháo: Tùy chọn js:

it "should be able create a new foo", :focus do 
    visit new_foo_path 
    find('#submit').click 
end 

kiểm tra javascript làm việc trong các trang khác trên ứng dụng này ...

Điều này không có ý nghĩa với tôi. Có ai có bất cứ đề nghị làm thế nào để gỡ lỗi từ đây?

Nhờ sự giúp đỡ

Trả lời

6

Các lỗi mà bạn thấy là cách khó hiểu khả năng nhất Capybara-webkit của bạn nói rằng có một số loại ngoại lệ trong trang. Tôi đã có the same problem một thời gian trở lại và điều "Không thể tải URL" đã làm tôi thất vọng, khiến việc tìm ra vấn đề thực tế trở nên khó khăn.

Như một vài điều cần cố gắng, tôi muốn đề nghị:

  • Hãy chắc chắn rằng bạn có phiên bản mới nhất của Capybara-webkit cài đặt.
  • Kiểm tra các yếu tố của thử nghiệm ngoài biểu mẫu thực tế, ví dụ: logic điều khiển và bất kỳ mô hình nào có liên quan. Bỏ mọi thứ ra cho đến khi bạn không có gì.
  • Khám phá discussion về sự cố này và theo dõi khách hàng tiềm năng từ đó. Tôi khá chắc chắn đó là cùng một vấn đề hoặc một liên quan.

Chúc may mắn!

+0

cảm ơn ... hoàn toàn đúng trong trường hợp của tôi không liên quan gì đến selen! –

+0

Vấn đề là tôi đã buộc ssl trong application_controller của tôi không có loại trừ cho môi trường thử nghiệm –

19

Thêm thông tin sau vào cấu hình capybara của bạn.

require 'rack/utils' 
Capybara.app = Rack::ShowExceptions.new(NameOfYourRailsApp::Application) 

Khi gặp lỗi, bạn sẽ thấy trang có chi tiết về môi trường (cookie, v.v.) và backtrace.

+1

Cảm ơn rất nhiều! Nó hoạt động tuyệt vời! –

+0

Tôi đã tìm kiếm điều này cho những gì có vẻ như * mãi mãi *. Tôi đã có lỗi ghi VCR không hiển thị ở bất cứ đâu, vì vậy tôi không biết chuyện gì đang diễn ra. Bây giờ tôi có thể thấy vấn đề. Cảm ơn bạn! – mmrobins

+2

Điều này sẽ là câu trả lời được chấp nhận (câu trả lời của tôi chỉ là một vài gợi ý, điều này thực sự giải quyết vấn đề). –

2

Tôi đang làm việc với các tên miền phụ và tôi có thể làm cho nó hoạt thêm dòng sau vào spec_helper.rb:

Capybara.configure do |config| 
    config.javascript_driver = :webkit 
    config.server_port = 3000 
    config.app_host = "http://subdomain.local.host:3000" 
end 

Rõ ràng thêm trước 127.0.0.1 subdomain.local.host đến file /etc/hosts tôi

2

Tôi đã có một vấn đề tương tự và đã có thể khắc phục sự cố bằng cách bật page.driver.browser.ignore_ssl_errors cho :js thử nghiệm đã bật.Đây là mã làm việc cho tôi:

config.before(:each) do 
    if Capybara.current_driver == :webkit 
     # Need to manually specify ignoring of SSL errors 
     page.driver.browser.ignore_ssl_errors 
    end 
end 
Các vấn đề liên quan