
Selenium WebDriver a Ă©tĂ© créé comme un outil multiplateforme pour la gestion des navigateurs Web. Et depuis prĂšs de 14 ans maintenant, il fait trĂšs, trĂšs bien ce travail. Cependant, les autotests rĂ©els crĂ©ent des situations dans lesquelles le sĂ©lĂ©nium est impuissant. Par exemple, selon un script, vous devez tĂ©lĂ©charger ou tĂ©lĂ©charger un fichier. AprĂšs avoir cliquĂ© sur le bouton "TĂ©lĂ©charger" ou "TĂ©lĂ©charger", une fenĂȘtre du gestionnaire de fichiers du systĂšme d'exploitation apparaĂźt en haut de la fenĂȘtre du navigateur Ă laquelle Selenium n'a plus accĂšs. Le test s'arrĂȘte.
J'ai entendu des recommandations pour utiliser des utilitaires comme AutoIt ou Sikuli pour travailler avec de telles fenĂȘtres systĂšme. Mon conseil est de ne jamais faire ça, c'est une pratique vicieuse qui conduit Ă des tests instables:
. 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, .
, , . , . â .
Pour que les tests restent stables, les facteurs qui les fragilisent doivent ĂȘtre supprimĂ©s. Dialogues d'un systĂšme d'exploitation, c'est l'un de ces facteurs. Dans les articles suivants, je prĂ©vois de rĂ©vĂ©ler d'autres aspects importants qui affectent grandement le fonctionnement stable des tests au sĂ©lĂ©nium. Ăcoutez le podcast QA Guild et une bonne automatisation.