Como fazer upload de & Baixe um arquivo usando o Selenium Webdriver

Índice:

Anonim

Neste tutorial, aprenderemos como lidar com uploads e downloads de arquivos.

Carregando arquivos

Para esta seção, usaremos http://demo.guru99.com/test/upload/ como nosso aplicativo de teste. Este site permite que qualquer visitante carregue arquivos facilmente sem exigir que ele se inscreva.

O upload de arquivos no WebDriver é feito simplesmente usando o método sendKeys () no campo de entrada de seleção de arquivo para inserir o caminho para o arquivo a ser carregado.

Gerenciar pop-up de upload de arquivo no Selenium Webdriver
lidar com pop-up de upload de arquivo no selenium webdriver

Digamos que desejamos enviar o arquivo "C: \ newhtml.html". Nosso código WebDriver deve ser como o mostrado abaixo.

package newproject;import org.openqa.selenium. *;import org.openqa.selenium.firefox.FirefoxDriver;public class PG9 {public static void main (String [] args) {System.setProperty ("webdriver.gecko.driver", "C: \\ geckodriver.exe");String baseUrl = "http://demo.guru99.com/test/upload/";Driver WebDriver = novo FirefoxDriver ();driver.get (baseUrl);WebElement uploadElement = driver.findElement (By.id ("uploadfile_0"));// insira o caminho do arquivo no campo de entrada de seleção de arquivouploadElement.sendKeys ("C: \\ newhtml.html");// marque a caixa de seleção "Aceito os termos de serviço"driver.findElement (By.id ("termos")). click ();// clique no botão "UploadFile"driver.findElement (By.name ("enviar")). click ();}}

Depois de executar esse script, você poderá fazer o upload do arquivo com êxito e deverá receber uma mensagem semelhante a esta.

Lembre-se de seguir duas coisas ao enviar arquivos no WebDriver

  1. Não há necessidade de simular o clique do botão "Navegar". WebDriver insere automaticamente o caminho do arquivo na caixa de texto de seleção de arquivo do elemento
  2. Ao definir o caminho do arquivo em seu IDE Java, use o caractere de escape adequado para a barra invertida.

Baixando arquivos

O WebDriver não tem capacidade de acessar as caixas de diálogo de download apresentadas pelos navegadores quando você clica em um link ou botão de download. No entanto, podemos ignorar essas caixas de diálogo usando um programa separado chamado "wget".

O que é Wget?

Wget é um programa de linha de comando pequeno e fácil de usar, usado para automatizar downloads . Basicamente, acessaremos o Wget a partir de nosso script WebDriver para realizar o processo de download.

Configurando o Wget

Etapa 1: Em sua unidade C, crie uma nova pasta e nomeie-a como "Wget".

Baixe wget.exe aqui e coloque-o na pasta Wget que você criou na etapa acima.

Passo 2: Abra Executar pressionando a tecla windows + "R"; digite "cmd e clique em ok

Digite o comando "cd /" para mover para o diretório raiz

Etapa 3: digite o comando para verificar se a configuração fornecida está funcionando

cmd / c C: \\ Wget \\ wget.exe -PC: --no-check-certificate http://demo.guru99.com/selenium/msgr11us.exe

Parece haver um problema ao gravar na unidade C.

Etapa 4: Você precisa depurar os erros do wget na linha de comando antes de executar o código usando o Selenium Webdriver. Esses erros persistirão no Eclipse e as mensagens de erro não serão tão informativas. É melhor primeiro fazer o wget funcionar usando a linha de comando. Se funcionar na linha de comando, com certeza funcionará no Eclipse.

Em nosso exemplo, conforme mostrado na etapa 3, há um problema ao gravar na unidade C. Vamos mudar o local de download para a unidade D e verificar os resultados.

cmd / c C: \\ Wget \\ wget.exe -PD: --no-check-certificate http://demo.guru99.com/selenium/msgr11us.exe

Messenger foi baixado com sucesso.

Antes de prosseguir, não se esqueça de excluir o arquivo baixado

Usando WebDriver e Wget

No exemplo a seguir, usaremos o WebDriver e o wget para baixar um software de bate-papo popular chamado Yahoo Messenger. Nosso URL base deve ser http://demo.guru99.com/test/yahoo.html.

Passo 1

Importe o pacote "java.io.IOException" porque teremos que capturar uma IOException posteriormente na Etapa 4.

Passo 2

Use getAttribute () para obter o valor "href" do link de download e salve-o como uma variável String. Nesse caso, nomeamos a variável como "sourceLocation".

etapa 3

Configure a sintaxe para wget usando o seguinte comando.

Passo 4

Inicie o processo de download chamando wget de nosso código WebDriver.

Para resumir tudo, seu código WebDriver pode ser semelhante ao mostrado abaixo.

package newproject;import java.io.IOException;import org.openqa.selenium. *;import org.openqa.selenium.firefox.FirefoxDriver;public class PG8 {public static void main (String [] args) {System.setProperty ("webdriver.gecko.driver", "C: \\ geckodriver.exe");String baseUrl = "http://demo.guru99.com/test/yahoo.html";Driver WebDriver = novo FirefoxDriver ();driver.get (baseUrl);WebElement downloadButton = driver.findElement (por.id ("download do messenger"));String sourceLocation = downloadButton.getAttribute ("href");String wget_command = "cmd / c C: \\ Wget \\ wget.exe -PD: --no-check-certificate" + sourceLocation;tentar {Exec de processo = Runtime.getRuntime (). Exec (wget_command);int exitVal = exec.waitFor ();System.out.println ("Valor de saída: + exitVal);} catch (InterruptedException | IOException ex) {System.out.println (ex.toString ());}driver.close ();}}

Depois de executar este código, verifique sua unidade D e verifique se o instalador do Yahoo Messenger foi baixado com sucesso lá.

Resumo

  • O upload de arquivos no WebDriver é feito simplesmente usando o método sendKeys () no campo de entrada de seleção de arquivo para inserir o caminho para o arquivo a ser carregado.
  • O WebDriver não pode automatizar o download de arquivos por conta própria.
  • A maneira mais fácil de baixar arquivos usando o WebDriver é usar o Wget.