A única maneira segura de enviar e baixar arquivos nos testes do Selenium

imagem


O Selenium WebDriver foi criado como uma ferramenta multiplataforma para gerenciar navegadores da web. E há quase 14 anos ele vem fazendo esse trabalho muito, muito bem. No entanto, os autotestes do mundo real criam situações nas quais o Selenium é impotente. Por exemplo, de acordo com um script, você precisa carregar ou baixar um arquivo. Após clicar no botão "Download" ou "Download", uma janela do gerenciador de arquivos do sistema operacional aparece na parte superior da janela do navegador à qual o Selenium não tem mais acesso. O teste para.


Ouvi recomendações para usar utilitários como AutoIt ou Sikuli para trabalhar com essas janelas do sistema. Meu conselho é nunca fazer isso, essa é uma prática cruel que leva a testes instáveis:


  • -. .
  • . , .
  • headless

. 15 8 . .


— , .



, . — "". , ( input file) sendKeys() "" :


By fileInput = By.cssSelector("input[type=file]");
String filePath = "/home/selenium/files/upload.txt";

driver.findElement(fileInput).sendKeys(filePath);

. Selenium . . . , , , .


, ? , , DOM . $$("input[type=file]")


imagem


, findElement() . . , . , .


imagem


Selenium

, . , Selenium , . — . (barancev) . , .



, . - , Downloads, Selenium ( Internet Explorer), "" .


, , :


imagem


, . . :


imagem


, . href . , , http . Java :


//Get download link 
String downloadLink = driver
         .findElement(By.cssSelector("main#content a.btn"))
         .getAttribute("href");

//Set file to save
File fileToSave = new File("/path/to/file.zip");

//Download file using default org.apache.http client 
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet(downloadLink);
HttpResponse response = httpClient.execute(httpGet, new BasicHttpContext());

//Save file on disk
copyInputStreamToFile(response.getEntity().getContent(), fileToSave);

http

, . , JavaScript . , . , , , . , . , - . , , Selenium. BrowserUpProxy BrowserMobProxy.


, Selenide. DownloadFileWithProxyServer.


, , . https, .


, , . , . — .



Para que os testes permaneçam estáveis, os fatores que os tornam frágeis devem ser removidos. Diálogos de um sistema operacional, é um desses fatores. Nos artigos a seguir, pretendo revelar outros aspectos importantes que afetam bastante a operação estável dos testes de selênio. Ouça o podcast do QA Guild e boa automação.


All Articles