Der einzig sichere Weg, um Dateien in Selenium-Tests hoch- und herunterzuladen

Bild


Selenium WebDriver wurde als plattformübergreifendes Tool zur Verwaltung von Webbrowsern entwickelt. Und seit fast 14 Jahren macht er diese Arbeit sehr, sehr gut. Reale Autotests erzeugen jedoch Situationen, in denen Selen machtlos ist. Beispielsweise müssen Sie gemäß einem Skript eine Datei hochladen oder herunterladen. Nach dem Klicken auf die Schaltfläche "Herunterladen" oder "Herunterladen" wird über dem Browserfenster ein Fenster des Dateimanagers des Betriebssystems angezeigt, auf das Selenium keinen Zugriff mehr hat. Der Test stoppt.


Ich habe Empfehlungen gehört, Dienstprogramme wie AutoIt oder Sikuli zu verwenden, um mit solchen Systemfenstern zu arbeiten. Mein Rat ist, dies niemals zu tun. Dies ist eine bösartige Praxis, die zu instabilen Tests führt:


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


Bild


, findElement() . . , . , .


Bild


Selenium

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



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


, , :


Bild


, . . :


Bild


, . 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, .


, , . , . — .



Damit die Tests stabil bleiben, müssen Faktoren entfernt werden, die sie zerbrechlich machen. Dialoge eines Betriebssystems, es ist einer dieser Faktoren. In den folgenden Artikeln möchte ich weitere wichtige Aspekte aufzeigen, die den stabilen Betrieb von Selentests stark beeinflussen. Hören Sie sich den Podcast der QA Guild und die gute Automatisierung an.


All Articles