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.
lidar com pop-up de upload de arquivo no selenium webdriverDigamos 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
- 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
- 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.