
تم إنشاء Selenium WebDriver كأداة عبر النظام الأساسي لإدارة متصفحات الويب. وما يقرب من 14 عامًا حتى الآن يقوم بهذا العمل بشكل جيد جدًا. ومع ذلك ، تخلق الاختبارات الذاتية الواقعية مواقف يكون فيها السيلينيوم عاجزًا. على سبيل المثال ، وفقًا لنص برمجي ، تحتاج إلى تحميل أو تنزيل ملف. بعد النقر على الزر "تنزيل" أو "تنزيل" ، تظهر نافذة مدير الملفات في نظام التشغيل أعلى نافذة المتصفح التي لم يعد بإمكان Selenium الوصول إليها. يتوقف الاختبار.
سمعت توصيات لاستخدام أدوات مثل AutoIt أو Sikuli للعمل مع نوافذ النظام هذه. نصيحتي هي عدم القيام بذلك أبدًا ، فهذه ممارسة شريرة تؤدي إلى اختبارات غير مستقرة:
. 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, .
, , . , . — .
من أجل أن تظل الاختبارات مستقرة ، يجب إزالة العوامل التي تجعلها هشة. حوارات نظام التشغيل ، وهي واحدة من هذه العوامل. أخطط في المقالات التالية للكشف عن جوانب مهمة أخرى تؤثر بشكل كبير على التشغيل المستقر لاختبارات السيلينيوم. الاستماع إلى بودكاست QA Guild والأتمتة الجيدة.