Saltar a contenido

Esperas

Usando los métodos de espera, podrás sincronizar partes del proceso esperando algo antes de realizar una acción determinada.

Esperar

Puedes hacer que el proceso espere/duerma durante un intervalo de tiempo en milisegundos.

# Wait for 5 seconds.
bot.wait(5000)

# This will have the same effect as using wait.
bot.sleep(5000)
// Wait for 5 seconds.
wait(5000);

// This will have the same effect as using wait.
sleep(5000);

Esperar por Archivos

Además de esperar por situaciones del proceso, también puedes esperar por algunos archivos. Estos métodos pueden ser útiles cuando necesitas esperar a que un archivo se guarde o esté disponible en el disco.

Esperar por Archivo

Si tienes la ruta de un archivo específico, puedes usarla directamente en el método de espera.

# Esperando a que el archivo esté disponible durante un máximo de 60 segundos.
if bot.wait_for_file(path="/mi_directorio/archivos/documento.pdf", timeout=60000):
    print("¡El archivo está disponible!")
// Waiting for the file to be available for up to 60 seconds.
if(waitForFile("/my_directory/files/document.pdf", 60000)) {
    System.out.println("The file is available!");
}

Esperar por Nuevo Archivo

En casos en los que no tienes o no conoces la ruta específica del archivo, puedes usar el método de espera basado en la extensión del archivo.

# Waiting for a new file without the file path.
# In the first parameter you can set the folder where the file is expected.
filepath = bot.wait_for_new_file(path=bot.download_folder_path, file_extension=".pdf", timeout=60000)
print(f"New created file => {filepath}")
// Waiting for a new file without the file path.
// In the first parameter you can set the folder where the file is expected.
String filePath = waitForNewFile(getDownloadPath(), ".pdf", 0, 60000);
System.out.println("New created file => " + filePath);

Esperar por Descargas

Puedes esperar hasta que todas las descargas hayan finalizado antes de cerrar el navegador o continuar con los pasos de automatización.

# Esperar a que todas las descargas finalicen hasta 100 segundos.
# Este método reemplazará la página actual con la página de descargas.
bot.wait_for_downloads(timeout=100000)
// Esperar a que todas las descargas finalicen hasta 100 segundos.
// Este método reemplazará la página actual con la página de descargas.
waitForDownloads(100000);

Esperar por Nueva Página

En casos en los que se abre una nueva página, puedes hacer un tratamiento para esperar correctamente a esta página antes de continuar con el proceso.

# Starting the process.
bot.browse("https://documentation.botcity.dev/")

print("Opening a new page")

# Using the method as a context manager.
with bot.wait_for_new_page(waiting_time=10000, activate=True):
    # The code inside the 'with' context will be responsible for opening a new page.
    btn_new_page = bot.find_element('/html/body/div[3]/nav/div/ul/li[5]/a', By.XPATH)
    btn_new_page.click()

# When exiting the 'with' block the new page is already loaded and activated.
print("New page open, continuing the process...")
// Starting the process.
browse("https://documentation.botcity.dev/");

System.out.println("Opening a new page");

// Passing the code block responsible for opening the new page.
waitForNewPage(true, 10000, new Runnable() {
    @Override
    public void run() {
        WebElement btnNewPage = findElement(By.xpath("/html/body/div[3]/nav/div/ul/li[5]/a"));
        btnNewPage.click();
    }
});

System.out.println("New page open, continuing the process...");

Esperar por Visibilidad de Elemento

Puedes esperar hasta que un elemento sea visible u oculto en la página.

# Finding an element.
login = bot.find_element("login", By.ID)

# Waiting until it is visible on the page.
bot.wait_for_element_visibility(element=login, visible=True, waiting_time=10000)
// Finding an element.
WebElement login = findElement(By.id("login"));

// Waiting until it is visible on the page.
waitForElementVisibilitiy(login, true, 10000);

Esperar por Elemento Obsoleto

Además, también es posible esperar hasta que el elemento se vuelva obsoleto (desactualizado).

# Finding an element.
button = bot.find_element("button", By.ID)

# Monitoring this element.
bot.wait_for_stale_element(element=button, timeout=10000)
// Finding an element.
WebElement button = findElement(By.id("button"));

// Monitoring this element.
waitForStaleElement(button, 10000);