from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
browser = webdriver.Firefox()
browser.get("http://testsite.com")
element = WebDriverWait(browser, 10).until(lambda browser : browser.find_element_by_id("element"))
element.click() # it actually goes to page http://testsite.com/test-page.html
print "Just clicked! And I'm expecting timeout error!"
new_element = WebDriverWait(browser, 0.1).until(lambda browser : browser.find_element_by_id("element"))
print "Too bad there's no timeout error, why?!"
OK, come è possibile vedere anche se imposto il tempo di attesa su 0,1 sec non c'è ancora un'eccezione di timeout generata. Quando viene eseguito element.click()
, non viene bloccato fino a quando non viene caricata l'intera pagina e questo è il motivo per cui è stato visualizzato Just clicked! And I'm expecting timeout error!
e con mia sorpresa new_element = WebDriverWait(browser, 0.1).until(lambda browser : browser.find_element_by_id("element"))
attendi fino a quando l'intera pagina non viene caricata. E se usi implicit waits
, ottieni lo stesso risultato.Dimmi perché questo non termina con un errore di timeout (selenio 2 webdriver)?
Il mio punto è, a volte dopo aver fatto clic un elemento che potrebbe richiedere fino a ore, anche per una pagina per caricare a causa di una cattiva proxy e ovviamente NON vuole aspettare così a lungo, quello che vuoi è un'eccezione di timeout. In questo caso, come faresti a farlo funzionare?
Non capisco cosa intendi. Vuoi essere più specifico e come posso farlo? – Shane
... e con l'aggiornamento a 2.22, mi sono reso conto di tutti i posti in cui inconsciamente facevo affidamento su questa attesa implicita. XD – Isaac
Non penso che sia giusto. Stai parlando di driver.set_page_load_timeout() credo, ma ciò non ha a che fare con i clic. Non tutti i clic attivano il caricamento di una pagina. Il tempo di caricamento della pagina è solo per il caricamento della pagina. Anche l'interrogante ha problemi con il timeout semplicemente nel trovare l'elemento (non occorre coinvolgere alcun clic). – Purrell