Как да качите и изтеглите файл с помощта на Selenium

⚡ Умно обобщение

Качване и изтегляне на файл с помощта на Selenium Работните процеси на WebDriver разчитат на вградената функция sendKeys() за полета за въвеждане, AutoIt или Robot за диалози и CDP команди в Selenium 4 за задаване на безопасни пътища за изтегляне по време на автоматизирани изпълнения.

  • 📤 Метод на качване: Използвайте sendKeys() върху елемента за въвеждане на файл, за да въведете абсолютния път към файла, без да кликвате върху Browse.
  • 📥 Път за изтегляне: Конфигурирайте персонализирана директория за изтегляне чрез ChromeOptions или CDP Page.setDownloadBehavior в Selenium 4.
  • 🪟 Местни диалози: Задейства скриптове на AutoIt или java.awt.Robot, когато инструментът за избор на файлове на операционната система блокира взаимодействието на WebDriver.
  • 🤖 AI помощ: Генеративният изкуствен интелект предлага селектори, изгражда тестови файлове с данни и автоматично валидира целостта на изтеглените файлове.
  • Проверка за валидиране: Потвърдете успешното качване чрез съобщения за отговор и проверете изтеглянията, като използвате сравнение на размера на файла или контролната сума.

Как да качите и изтеглите файл с помощта на Selenium

Качването на файлове в WebDriver се извършва чрез използване на метода sendKeys() в полето за въвеждане на файл, за да се въведе пътя до файла, който ще бъде качен. В този урок ще научите как да се справяте с качването и изтеглянето на файлове, използвайки Selenium WebDriver.

Как да качите файл в Selenium

За този раздел ще използваме https://demo.guru99.com/test/upload/ като нашето тестово приложение. Този сайт позволява лесно на всеки посетител да качва файлове, без да е необходимо да се регистрира.

Качване на файл в Selenium
Управление на изскачащия прозорец за качване на файл Selenium Уебдрайвер

Да кажем, че искаме да качим файла „C:\newhtml.html“. Нашият код на WebDriver трябва да бъде като този, показан по-долу.

пакет новпроект;
внос org.openqa.selenium.*;
внос org.openqa.selenium.firefox.FirefoxШофьори;
обществена класа PG9 {
публична статична празнота основен(Низ[] аргументи) {
System.setProperty(„webdriver.gecko.driver“,„C:\\geckodriver.exe“);
Низ базов URL адрес = „https://demo.guru99.com/test/upload/“;
уебдрайвер шофьор = на нови FirefoxШофьор();

драйвер.get(базовUrl);
УебЕлемент качванеЕлемент = driver.findElement(By.id(„uploadfile_0“));

// въведете пътя до файла в полето за въвеждане на файл
uploadElement.sendKeys(„C:\\новhtml.html“);

// поставете отметка в квадратчето „Приемам условията за ползване“
driver.findElement(By.id(„термини“)).щракване();

// щракнете върху бутона „Качване на файл“
driver.findElement(By.name(„изпрати“)).щракване();
}
}

След като стартирате този скрипт, трябва да можете да качите файла успешно и трябва да получите съобщение, подобно на това.

Качване на файл в Selenium

Запомнете следните две неща, когато качвате файлове в WebDriver:

  1. Няма нужда да се симулира щракването върху бутона „Преглед“. WebDriver автоматично въвежда пътя до файла в текстовото поле за избор на файл на елемент.
  2. Когато задавате пътя на файла във вашия Java IDE, използвайте правилния екраниращ знак за обратната наклонена черта.

Качване на файл в Selenium

Обработка на диалози за качване без входни данни с AutoIt

Когато страницата използва персонализиран бутон за преглед, а не оригинален бутон елемент, sendKeys() не работи. В този случай можете да извикате AutoIt скрипт от Selenium да въведете пътя до файла в диалоговия прозорец на операционната система и да натиснете Enter.

Запазете скрипта по-долу като качване.au3, компилирайте го в качване.exe, след което го извикайте от Java след като щракнете върху бутона „Преглед“.

; upload.au3 – изчаква диалоговия прозорец „Отваряне“ и въвежда пътя до файла
WinWaitActive(„Отваряне“)
Изпрати(„C:\newhtml.html“)
Изпрати(„{ВЪВЕЖДАЙ}“)

От Java, задействайте помощника след щракване върху „Преглед“:

driver.findElement(By.id(„Browsebtn“)).щракване();
Runtime.getRuntime().exec(„C:\\AutoIt\\upload.exe“);

Класът java.awt.Robot е чисто-Java алтернатива, когато AutoIt не е наличен, въпреки че AutoIt е по-надежден на Windows защото чака диалоговия прозорец по заглавие.

Как да изтеглите файл в Selenium Уебдрайвер

WebDriver няма възможност за достъп до диалоговите прозорци за изтегляне представени от браузърите, когато щракнете върху връзка или бутон за изтегляне. Въпреки това можем да заобиколим тези диалогови прозорци с помощта на отделна програма, наречена „wget“.

Какво е Wget?

Wget е малка и лесна за използване програма от команден ред, използвана за автоматизиране на изтеглянията. По принцип ще имаме достъп до Wget от нашия скрипт WebDriver, за да извършим процеса на изтегляне.

Настройване на Wget

Стъпка 1) Във вашия C диск създайте нова папка и я наименувайте като „Wget“.

Изтеглете wget.exe оттук и го поставете в папката Wget, която създадохте в горната стъпка.

Настройване на Wget

Стъпка 2) Отворете „Изпълнение“, като натиснете Windows клавиш + „R“; въведете „cmd“ и щракнете върху OK.

Настройване на Wget

Въведете командата „cd /“, за да се преместите в главната директория.

Настройване на Wget

Стъпка 3) Въведете командата, за да проверите дали дадената настройка работи.

cmd /c C:\\Wget\\wget.exe -PC: –no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe

Настройване на Wget

Изглежда има проблем при запис в C устройство.

Стъпка 4) Трябва да отстраните грешките на wget в командния ред, преди да изпълните кода, използвайки Selenium WebDriver. Тези грешки ще се запазят в Eclipse и съобщенията за грешки няма да бъдат толкова информативни. Най-добре е първо да накарате wget да работи, използвайки командния ред. Ако работи в командния ред, определено ще работи и в Eclipse.

В нашия пример, както е показано в стъпка 3, има проблем със записа на C устройство. Нека променим мястото за изтегляне на D устройство и да проверим резултатите.

cmd /c C:\\Wget\\wget.exe -PD: –no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe

Настройване на Wget

Messenger беше изтеглен успешно.

Преди да продължите, не забравяйте да изтриете изтегления файл.

Използване на WebDriver и Wget

В следващия пример ще използваме WebDriver и wget, за да изтеглим популярен софтуер за чат, наречен Yahoo MessengerНашата база URL ще бъде https://demo.guru99.com/test/yahoo.html.

Използване на WebDriver и Wget

Стъпка 1) Импортирайте пакета „java.io.IOException“, защото ще трябва да хванем IOException по-късно в стъпка 4.

Използване на WebDriver и Wget

Стъпка 2) Използвайте getAttribute(), за да получите стойността „href“ на връзката за изтегляне и да я запишете като променлива тип String. В този случай сме нарекли променливата „sourceLocation“.

Използване на WebDriver и Wget

Стъпка 3) Настройте синтаксиса за wget, като използвате следната команда.

Използване на WebDriver и Wget

Стъпка 4) Започнете процеса на изтегляне, като извикате wget от нашия код на WebDriver.

Използване на WebDriver и Wget

За да обобщим всичко, вашият WebDriver код може да изглежда като този, показан по-долу.

пакет новпроект;
внос java.io.IOException;

внос org.openqa.selenium.*;
внос org.openqa.selenium.firefox.FirefoxШофьори;
обществена класа PG8 {
публична статична празнота основен(Низ[] аргументи) {

System.setProperty(„webdriver.gecko.driver“,„C:\\geckodriver.exe“);
Низ базов URL адрес = „https://demo.guru99.com/test/yahoo.html“;
уебдрайвер шофьор = на нови FirefoxШофьор();

драйвер.get(базовUrl);
УебЕлемент изтеглянеБутон = driver.findElement(By.id(„изтегляне от messenger“));
Низ МестоположениеНаИзточник = бутонЗаИзтегляне.getAttribute(„href“);
Низ wget_command = „cmd /c C:\\Wget\\wget.exe -PD: –no-check-certificate“ + източникМестоположение;

опитвам {
Процес exec = Runtime.getRuntime().exec(wget_command);
Int изходVal = exec.waitFor();
System.out.println(„Изходна стойност:“ + изходVal);
} улов (InterruptException | IOException напр.) {
System.out.println(напр.toString());
}
драйвер.затвори();
}
}

След като изпълните този код, проверете вашето D устройство и се уверете, че Yahoo Messenger инсталаторът беше изтеглен успешно там.

Използване на WebDriver и Wget

Задаване на персонализиран път за изтегляне с Selenium 4 CDP

Selenium Версия 4 предоставя протокола Chrome DevTools, който ви позволява да контролирате поведението на изтеглянето в браузъра без инструменти на трети страни. Фрагментът по-долу насочва всички изтегляния към персонализирана папка и пропуска подканата „Запиши като“, така че файловете да се намират там, където тестът ги очаква.

ChromeDriver шофьор = на нови ChromeDriver();
Карта<Низ,Обект> параметри = на нови HashMap<>();
params.put(„поведение“, "позволява");
params.put(„Път за изтегляне“, „D:\\selenium-downloads“);
драйвер.executeCdpCommand(„Поведение при изтегляне на страница“, параметри);
драйвер.get(„https://demo.guru99.com/test/yahoo.html“);
driver.findElement(By.id(„изтегляне от messenger“)).щракване();

Можете да проверите изтеглянето, като проверите целевата директория за очакваното име на файла и проверите неговия размер, което прави теста детерминистичен без външни скриптове.

Въпроси и Отговори

Selenium извиква sendKeys() на елемент с абсолютния път до файла. Браузърът попълва полето директно, така че не се отваря инструмент за избор на файлове на операционната система и не е необходимо щракване върху „Преглед“.

Когато страницата не показва входен файл, използвайте AutoIt на Windows или класа java.awt.Robot. Тези инструменти въвеждат пътя в активния диалогов прозорец на операционната система и натискат Enter, след като бутонът Browse е щракнат.

Извикайте executeCdpCommand(“Page.setDownloadBehavior”, params) с поведение, зададено на allow, и downloadPath, зададен на вашата папка. Selenium 4 препраща командата към Chrome DevTools и подканата „Запиши като“ се пропуска.

Да. Асистентите с изкуствен интелект четат формуляра ви за качване, предлагат селектори, генерират гранични файлове, като празни, прекалено големи или с неправилно разширение семпли, и пишат блока sendKeys(). Това съкращава времето за настройка и разкрива крайни случаи, които човешките тестери често пропускат.

Инструменти за AI анкетират целевата папка, сравняват размера на файла и контролната сума с очакваните стойности и маркират несъответствия. Моделите за зрение могат дори да отварят PDF файлове или изображения и да потвърждават, че съдържанието съответства на етикета на връзката, премахвайки ръчния преглед от регресионните изпълнения.

Wget заобикаля браузъра изцяло и запазва файла директно на диск чрез команден ред. Полезен е за по-стари версии. Selenium 2 или 3 настройки, при които предпочитанията за изтегляне на CDP и ChromeOptions не са налични.

Обобщете тази публикация с: