Ho una pagina che a volte carica in più di un minuto. Supponiamo che questo sia il comportamento previsto e non cambierà. In questi casi, ricevo Net::ReadTimeout
.Capybara aumenta il tempo di caricamento massimo consentito della pagina
Si noti che questo è dopo aver navigato in una pagina facendo clic su un pulsante nella pagina precedente, non su una richiesta Ajax. Pertanto, Capybara.using_wait_time
non aiuta.
Ho provato un certo numero di cose radicali (alcuni dei quali sapevo che non avrebbe funzionato) come:
- Impostazione
page.driver.browser.manage.timeouts
s'implicit_wait
,script_timeout
epage_load
. - Ciclo continuo attraverso l'intero spazio oggetti e impostazione del valore
timeout
timeout
. - Ciclo continuo attraverso l'intero spazio oggetti e impostazione di tutti gli
Net::HTTP
diread_timeout
. page.driver.browser.send(:bridge).http.instance_variable_get(:@http).read_timeout=
Nessuno sembra funzionare. Questo dovrebbe essere molto banale, ancora non ho trovato il modo di farlo.
Se siete a conoscenza di una soluzione agnostica di un webdriver, sarebbe fantastico. In caso contrario, sto utilizzando selenio.
i miei 2 centesimi: automazione tutto sul feedback rapido, se la tua app richiede più di un minuto per caricare, aumentare il timeout della pagina non è la risposta, portare il tempo di caricamento delle app è quello che dovresti concentrarti su ... – Bodao
@ user3087106, sono completamente d'accordo. Tuttavia, nel caso attuale questo non è applicabile. Supponiamo che sto testando il progetto live di qualcun altro e non sono disposti a investire le risorse necessarie per ottimizzare l'operazione/inserirla in un processo in background o altro. – ndn
Hai provato ad aumentare Capybara.default_max_wait_time (il valore predefinito è 2 secondi), insieme a un'asserzione per un elemento che è disponibile solo sulla nuova pagina? – Sam