Ir para o conteúdo

Espera

Usando métodos de espera, você poderá sincronizar partes do processo que estão esperando por algo antes de executar uma determinada ação.

Espere

Você pode fazer o processo esperar/dormir por um intervalo de tempo em milissegundos.

# Aguarde 5 segundos.
bot.wait(5000)

# Isso terá o mesmo efeito que usar 'wait'.
bot.sleep(5000)
// Aguarde 5 segundos.
wait(5000);

// Isso terá o mesmo efeito que usar 'wait'.
sleep(5000);

Aguardando por arquivos

Além de aguardar situações do processo, você também pode aguardar por alguns arquivos.

Esses métodos podem ser úteis quando você precisa aguardar até que um arquivo seja salvo ou esteja disponível no disco.

Aguarde por um arquivo específico

Se você tiver o caminho de um arquivo específico, poderá usá-lo diretamente no método wait_for_file.

# Esperando o arquivo estar disponível por até 60 segundos.
if bot.wait_for_file(path="/meu_diretorio/arquivos/documento.pdf", timeout=60000):
    print("O arquivo está disponível!")
// Esperando o arquivo estar disponível por até 60 segundos.
if(waitForFile("/meu_diretorio/arquivos/documento.pdf", 60000)) {
    System.out.println("O arquivo está disponível!");
}

Aguarde por um novo arquivo

Nos casos em que você não tem ou não conhece o caminho específico do arquivo, você pode usar o método de espera com base na extensão do arquivo.

# Esperando por um novo arquivo sem o caminho do arquivo.
# No primeiro parâmetro, você pode definir a pasta onde o arquivo é esperado.
caminho_do_arquivo = bot.wait_for_new_file(path=bot.download_folder_path, file_extension=".pdf", timeout=60000)
print(f"novo arquivo criado => {caminho_do_arquivo}")
// Esperando por um novo arquivo sem o caminho do arquivo.
// No primeiro parâmetro, você pode definir a pasta onde o arquivo é esperado.
String caminho_do_arquivo = waitForNewFile(getDownloadPath(), ".pdf", 0, 60000);
System.out.println ("novo arquivo criado =>" + caminho_do_arquivo);

Aguarde a finalização dos downloads

Você pode esperar até que todos os downloads sejam concluídos antes de fechar o navegador ou prosseguir com o processo de automação.

# Aguarde até que todos os downloads sejam concluídos por até 100 segundos.
# Este método substituirá a página atual pela página de downloads.
bot.wait_for_downloads(timeout=100000)
// Aguarde até que todos os downloads sejam concluídos por até 100 segundos.
// Este método substituirá a página atual pela página de downloads.
waitForDownloads(100000);

Aguarde uma nova página

Nos casos em que uma nova página é aberta, você pode fazer um tratamento para aguardar esta página corretamente antes de prosseguir com o processo.

# Iniciando o processo.
bot.browse("https://documentation.botcity.dev/")

print("Abrindo uma nova página")

# Usando o método como um 'context manager'.
with bot.wait_for_new_page(waiting_time=10000, activate=True):
    # O código dentro do bloco 'with' será responsável por abrir uma nova página.
    btn_nova_pag = bot.find_element('/html/body/div[3]/nav/div/ul/li[5]/a', By.XPATH)
    btn_nova_pag.click()

# Ao sair do bloco 'with', a nova página já estará carregada e ativada.
print("nova página aberta, continuando o processo...")
// Iniciando o processo.
browse("https://documentation.botcity.dev/");

System.out.println("Abrindo uma nova página");

// Passando o bloco de código responsável por abrir a nova página.
waitForNewPage(true, 10000, new Runnable() {
    @Override
    public void run() {
        WebElement btnNovaPag = findElement(By.xpath("/html/body/div[3]/nav/div/ul/li[5]/a"));
        btnNovaPag.click();
    }
});

System.out.println("nova página aberta, continuando o processo ...");

Aguarde a visibilidade do elemento

Você pode esperar até que um elemento esteja visível ou oculto na página.

# Encontrando um elemento.
login = bot.find_element("login", By.ID)

# Esperando até que esteja visível na página.
bot.wait_for_element_visibility(element=login, visible=True, waiting_time=10000)
// Encontrando um elemento.
WebElement login = findElement(By.id("login"));

// Esperando até que esteja visível na página.
waitForElementVisibilitiy(login, true, 10000);

Aguarde pelo elemento obsoleto

Além disso, também é possível esperar até que o elemento fique obsoleto (desatualizado).

# Encontrando um elemento.
botao = bot.find_element("button", By.ID)

# Monitorando este elemento.
bot.wait_for_stale_element(element=botao, timeout=10000)
// Encontrando um elemento.
WebElement botao = findElement(By.id("button"));

// Monitorando este elemento.
waitForStaleElement(botao, 10000);