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

Да кажем, че искаме да качим файла „C:\newhtml.html“. Нашият код на WebDriver трябва да бъде като този, показан по-долу.
package newproject;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
public class PG9 {
public static void main(String[] args) {
System.setProperty("webdriver.gecko.driver","C:\\geckodriver.exe");
String baseUrl = "https://demo.guru99.com/test/upload/";
WebDriver driver = new FirefoxDriver();
driver.get(baseUrl);
WebElement uploadElement = driver.findElement(By.id("uploadfile_0"));
// enter the file path onto the file-selection input field
uploadElement.sendKeys("C:\\newhtml.html");
// check the "I accept the terms of service" check box
driver.findElement(By.id("terms")).click();
// click the "UploadFile" button
driver.findElement(By.name("send")).click();
}
}
След като стартирате този скрипт, трябва да можете да качите файла успешно и трябва да получите съобщение, подобно на това.
Не забравяйте да следвате две неща, когато качвате файлове в WebDriver
- Няма нужда да симулирате щракване върху бутона „Преглед“. WebDriver автоматично въвежда пътя на файла в текстовото поле за избор на файл на елемент
- Когато задавате пътя на файла във вашия Java IDE, използвайте правилния екраниращ знак за обратната наклонена черта.
Как да изтеглите файл в Selenium Уебдрайвер
WebDriver няма възможност за достъп до диалоговите прозорци за изтегляне представени от браузърите, когато щракнете върху връзка или бутон за изтегляне. Въпреки това можем да заобиколим тези диалогови прозорци с помощта на отделна програма, наречена „wget“.
Какво е Wget?
Wget е малка и лесна за използване програма от команден ред, използвана за автоматизиране на изтеглянията. По принцип ще имаме достъп до Wget от нашия скрипт WebDriver, за да извършим процеса на изтегляне.
Настройване на Wget
Стъпка 1) Във вашия C диск създайте нова папка и я наименувайте като „Wget“.
Изтеглете wget.exe оттук и го поставете в папката Wget, която сте създали от горната стъпка.
Стъпка 2) Отворете Run, като натиснете клавиша windows + “R” ; въведете „cmd“ и щракнете върху OK
Въведете командата “cd /”, за да се преместите в основната директория
Стъпка 3) Въведете командата, за да проверите дали дадената настройка работи
cmd /c C:\\Wget\\wget.exe -P C: --no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe
Изглежда има проблем при запис в C устройство.
Стъпка 4) Трябва да отстраните грешките на wget в командния ред, преди да изпълните кода с помощта на Selenium Уебдрайвер. Тези грешки ще продължат да съществуват Eclipse и съобщенията за грешки няма да бъдат толкова информативни. Най-добре първо да накарате wget да работи с помощта на командния ред. Ако работи в командния ред, със сигурност ще работи Eclipse.
В нашия пример, както е показано в стъпка 3, има проблем при запис в C устройство. Нека променим местоположението за изтегляне на D диск и да проверим резултатите.
cmd /c C:\\Wget\\wget.exe -P D: --no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe
Messenger беше изтеглен успешно.
Преди да продължите, не забравяйте да изтриете изтегления файл
Използване на WebDriver и Wget
В следващия пример ще използваме WebDriver и wget, за да изтеглим популярен софтуер за чат, наречен Yahoo Messenger. Нашият основен URL ще бъде https://demo.guru99.com/test/yahoo.html.
Стъпка 1) Импортирайте пакета „java.io.IOException“, защото ще трябва да хванем IOException по-късно в стъпка 4.
Стъпка 2) Използвайте getAttribute(), за да получите стойността „href“ на връзката за изтегляне и да я запишете като променлива String. В този случай наименувахме променливата като „sourceLocation“.
Стъпка 3) Настройте синтаксиса за wget, като използвате следната команда.
Стъпка 4) Започнете процеса на изтегляне, като извикате wget от нашия код на WebDriver.
За да обобщим всичко, вашият WebDriver код може да изглежда като този, показан по-долу.
package newproject;
import java.io.IOException;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
public class PG8 {
public static void main(String[] args) {
System.setProperty("webdriver.gecko.driver","C:\\geckodriver.exe");
String baseUrl = "https://demo.guru99.com/test/yahoo.html";
WebDriver driver = new FirefoxDriver();
driver.get(baseUrl);
WebElement downloadButton = driver.findElement(By
.id("messenger-download"));
String sourceLocation = downloadButton.getAttribute("href");
String wget_command = "cmd /c C:\\Wget\\wget.exe -P D: --no-check-certificate " + sourceLocation;
try {
Process exec = Runtime.getRuntime().exec(wget_command);
int exitVal = exec.waitFor();
System.out.println("Exit value: " + exitVal);
} catch (InterruptedException | IOException ex) {
System.out.println(ex.toString());
}
driver.close();
}
}
След като изпълните този код, проверете вашето D устройство и се уверете, че Yahoo Messenger инсталаторът беше изтеглен успешно там.
Oбобщение
- Качването на файлове в WebDriver се извършва просто чрез използване на метода sendKeys() в полето за въвеждане на файл за въвеждане на пътя до файла, който ще се качи.
- WebDriver не може сам да автоматизира изтеглянето на файлове.
- Най-лесният начин за изтегляне на файлове с помощта на WebDriver е да използвате Wget.












