¿Cuál es la diferencia entre espera implícita vs. Espera explícita en Selenium webdriver?

Amablemente comparta el conocimiento sobre Selenium webdriver. Por favor, muestre el ejemplo en tiempo real.

Verifique los enlaces a continuación:

  • Implicit Wait : indica al controlador web que espere un tiempo al sondear el DOM. Una vez que haya declarado la espera implícita, estará disponible durante toda la vida de la instancia del controlador web. De forma predeterminada, el valor será 0. Si establece un valor predeterminado más largo, el comportamiento sondeará el DOM de forma periódica en función de la implementación del navegador / controlador.

  • Explicit Wait + ExpectedConditions – Es el personalizado. Se usará si queremos que la ejecución espere un tiempo hasta que se logre alguna condición.

Espera implícita

Las esperas implícitas son básicamente tu forma de decirle a WebDriver la latencia que deseas ver si no está presente el elemento web especificado que busca WebDriver. Entonces, en este caso, le está diciendo a WebDriver que debería esperar 10 segundos en caso de que el elemento especificado no esté disponible en la IU (DOM).

Espera explícita

Las esperas explícitas son esperas inteligentes que se limitan a un elemento web particular. Al usar esperas explícitas básicamente le está diciendo a WebDriver al máximo que es esperar X unidades de tiempo antes de que se dé por vencido.

Diferencias

1) Espera implícita se establece para toda la duración del objeto webDriver. Supongamos que desea esperar una cierta duración, digamos 5 segundos antes de cargar cada elemento o muchos elementos en la página web. Ahora, no querrás escribir el mismo código una y otra vez. Por lo tanto, espera implícita. Sin embargo, si desea esperar solo por un elemento, use explícito.

2) No solo necesita que se muestre el elemento web, sino también que se pueda hacer clic en él o que satisfaga otras propiedades de los elementos web. Tal tipo de flexibilidad puede ser proporcionada por espera explícita solamente. Especialmente útil si se cargan datos dynamics en la página web. Puedes esperar a que se desarrolle ese elemento (no solo aparecer en DOM) usando espera explícita.

Agregar otro punto de vista a las soluciones mencionadas anteriormente.

Espera implícita: cuando se crea, está activa hasta que muere el objeto WebDriver. Y es como común para todas las operaciones.

Mientras,
Espera explícita , se puede declarar para una operación particular dependiendo del comportamiento webElement. Tiene el beneficio de personalizar el tiempo de sondeo y la satisfacción de la condición.
Por ejemplo, declaramos espera implícita de 10 segundos, pero un elemento requiere más que eso, digamos 20 segundos y, a veces, puede aparecer en 5 segundos, por lo que en este escenario, se declara la espera explícita.

Mi pensamiento,

Espera implícita : si se establece la espera, esperará una cantidad específica de tiempo para cada llamada findElement / findElements. Lanzará una excepción si la acción no está completa.

Espera explícita : si se establece la espera, esperará y pasará al siguiente paso cuando la condición proporcionada sea verdadera, de lo contrario emitirá una excepción después de esperar el tiempo especificado. La espera explícita solo se aplica una vez donde se especifique.

Las esperas implícitas se utilizan para proporcionar un tiempo de espera predeterminado entre cada paso / comando de prueba consecutivos en todo el guión de prueba. Por lo tanto, el siguiente paso de prueba solo se ejecutará una vez transcurrido el tiempo especificado después de ejecutar el paso / comando de prueba anterior.

Las esperas explícitas se utilizan para detener la ejecución hasta el momento en que se cumple una condición particular o cuando ha transcurrido el tiempo máximo. A diferencia de las Esperas implícitas, las Esperas explícitas se aplican solo a una instancia en particular.