Tôi có một trang đôi khi tải trong hơn một phút. Giả sử đây là hành vi mong đợi và sẽ không thay đổi. Trong những trường hợp này, tôi nhận được Net::ReadTimeout
.Capybara tăng thời gian tải trang tối đa cho phép
Lưu ý rằng điều này sau khi điều hướng đến trang bằng cách nhấp vào nút trên trang trước, không phải yêu cầu ajax. Do đó Capybara.using_wait_time
không giúp ích gì.
Tôi đã thử một số điều căn bản (một số trong đó tôi biết sẽ không hoạt động) như:
- Thiết
page.driver.browser.manage.timeouts
'simplicit_wait
,script_timeout
vàpage_load
. - Lặp qua toàn bộ không gian đối tượng và đặt tất cả
Selenium::WebDriver::Remote::Http::Default
giá trịtimeout
. - Lặp qua toàn bộ không gian đối tượng và đặt tất cả
Net::HTTP
'sread_timeout
. page.driver.browser.send(:bridge).http.instance_variable_get(:@http).read_timeout=
Không có gì có vẻ hiệu quả. Điều này sẽ rất tầm thường, tôi vẫn không thể tìm ra cách để làm điều đó.
Nếu bạn biết về giải pháp thuyết bất khả tri web sẽ tuyệt vời. Nếu không - tôi đang sử dụng selenium.
2 cent của tôi: tự động hóa là tất cả về phản hồi nhanh, nếu ứng dụng của bạn mất hơn một phút để tải, tăng thời gian chờ trang không phải là câu trả lời, hãy giảm thời gian tải xuống ứng dụng của bạn là những gì bạn nên tập trung ... – Bodao
@ user3087106, tôi hoàn toàn đồng ý. Tuy nhiên, trong trường hợp hiện tại, điều này không áp dụng được. Giả sử tôi đang thử nghiệm dự án trực tiếp của người khác và họ không sẵn sàng đầu tư các nguồn lực cần thiết để tối ưu hóa hoạt động/đặt nó trong một quá trình nền hoặc bất cứ điều gì. – ndn
Bạn đã thử tăng Capybara.default_max_wait_time (mặc định là 2 giây), cùng với một khẳng định cho một yếu tố chỉ có sẵn trên trang mới? – Sam