select_by_value example python selenium webdriver

example - selenium webdriver python



selenium.wait_for_condition equivalent en los enlaces de Python para WebDriver (3)

Moveré algunas pruebas de Selenium a WebDriver. Mi problema es que no puedo encontrar un equivalente para selenium.wait_for_condition. ¿Los enlaces de Python tienen esto en este momento, o todavía está planeado?


El enlace de Java incluye una clase de espera. Esta clase verifica repetidamente una condición (con reposo entre) hasta que se alcanza un tiempo de espera. Si puede detectar la finalización de su Javascript utilizando la API normal, puede tomar el mismo enfoque.


Actualmente no es posible usar wait_for_condition con WebDriver. El código de selenio de python proporciona la clase DrivenSelenium para acceder a los antiguos métodos de selenio, pero no puede esperar wait_for_condition. El wiki de selenio tiene algo de información sobre eso .

Su mejor opción es usar la clase WebDriverWait. Esta es una clase auxiliar que periódicamente ejecuta una función esperando que devuelva True. Mi uso general es

driver = webdriver.Firefox() driver.get(''http://example.com'') add = driver.find_element_by_id("ajax_button") add.click() source = driver.page_source def compare_source(driver): try: return source != driver.page_source except WebDriverException: pass WebDriverWait(driver, 5).until(compare_source) # and now do some assertions

Esta solución no es ideal. El try / except es necesario para situaciones en las que el ciclo de solicitud / respuesta de la página se retrasa esperando a que se complete alguna actividad de ajax. Si se llama a compare_source get en medio del ciclo de solicitud / respuesta lanzará una WebDriverException.

La cobertura de prueba para WebDriverWait también es útil para mirar.


Aquí está mi versión de la respuesta de Greg Sadetsky, puesto en una función:

def click_n_wait(driver, button, timeout=5): source = driver.page_source button.click() def compare_source(driver): try: return source != driver.page_source except WebDriverException: pass WebDriverWait(driver, timeout).until(compare_source)

Hace clic en el botón, espera que el DOM cambie y luego regresa.