select_by_value page name for example python selenium webdriver selenium-webdriver wait

page - submit selenium python



¿Configurar un tiempo de espera real para cargar la página en Selenium WebDriver? (2)

Aún puede acelerar la ejecución de su script esperando la presencia (no esperando la visibilidad) del elemento esperado durante, por ejemplo, 5-8 segundos y luego enviando windows.stop () JS Script (para detener la carga de otros elementos) sin esperar a que se cargue toda la página o capturar la excepción de tiempo de espera para la carga de la página después de 5-8 segundos y luego llamar a window.stop ()

Porque si la página no adoptó la técnica de carga diferida (cargar solo el elemento visible y cargar el resto del elemento solo después del desplazamiento) carga cada elemento antes de volver a la ventana. El estado está listo, por lo que será más lento si el elemento tarda más tiempo en procesarse.

Estoy probando un sitio con muchos proxies, y el problema es que algunos de esos proxies son muy lentos. Por lo tanto, mi código está atascado al cargar páginas de vez en cuando.

from selenium import webdriver browser = webdriver.Firefox() browser.get("http://example.com/example-page.php") element = browser.find_element_by_id("someElement")

He intentado muchas cosas como explicit waits o explicit waits implicit waits y he estado buscando durante bastante tiempo pero todavía no he encontrado una solución o solución alternativa. Nada parece realmente afectar la línea de carga de la página browser.get("http://example.com/example-page.php") , y es por eso que siempre está ahí.

¿Alguien tiene una solución para esto?

Actualización 1:

La respuesta de JimEvans resolvió mi problema anterior y here puede encontrar un parche de python para esta nueva característica.

Nuevo problema:

browser = webdriver.Firefox() browser.set_page_load_timeout(30) browser.get("http://example.com/example-page.php") element = browser.find_element_by_id("elementA") element.click() ## assume it''s a link to a new page http://example.com/another-example.php another_element = browser.find_element_by_id("another_element")

Como puede ver, browser.set_page_load_timeout(30) solo afecta browser.get("http://example.com/example-page.php") que significa que si esta página se carga por más de 30 segundos, arrojará una excepción de tiempo de espera, pero el problema es que no tiene poder sobre la carga de la página como element.click() , aunque no se bloquea hasta que la nueva página se carga por completo, another_element = browser.find_element_by_id("another_element") es el nuevo problema. , ya sea que explicit waits o las explicit waits implicit waits esperen a que se cargue toda la página antes de que empiece a buscar ese elemento. En algunos casos extremos esto llevaría incluso HORAS . ¿Qué puedo hacer al respecto?


Puede intentar usar el tiempo de espera de carga de página introducido en la biblioteca. La implementación no es universal, pero está expuesta con certeza por los enlaces de .NET y Java, y se ha implementado en el controlador de Firefox ahora, y en el controlador de IE en los próximos 2.22. En Java, para establecer el tiempo de espera de carga de la página en 15 segundos, el código para configurarlo se vería así:

driver.manage().timeouts().pageLoadTimeout(15, TimeUnit.SECONDS);

Si no está expuesto en los enlaces del lenguaje Python, estoy seguro de que el mantenedor aceptará con entusiasmo un parche que lo implementó.