
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:
. 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]")

, findElement()
. . , . , .

Selenium, . , Selenium , . — . (barancev) . , .
, . - , Downloads, Selenium ( Internet Explorer), "" .
, , :

, . . :

, . href
. , , http . Java :
String downloadLink = driver
.findElement(By.cssSelector("main#content a.btn"))
.getAttribute("href");
File fileToSave = new File("/path/to/file.zip");
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet(downloadLink);
HttpResponse response = httpClient.execute(httpGet, new BasicHttpContext());
copyInputStreamToFile(response.getEntity().getContent(), fileToSave);
, . , 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.