Jak przesłać i pobrać plik za pomocą Selenium
Prześlij plik w selenie
Przesyłanie plików do programu WebDriver odbywa się po prostu za pomocą metody sendKeys() w polu wejściowym wyboru pliku w celu wprowadzenia ścieżki do pliku, który ma zostać przesłany.
W tym samouczku dowiemy się, jak radzić sobie z przesyłaniem i pobieraniem plików.
Jak przesłać plik w Selenium
W tej sekcji użyjemy https://demo.guru99.com/test/upload/ jako nasza aplikacja testowa. Ta witryna umożliwia każdemu odwiedzającemu łatwe przesyłanie plików bez konieczności rejestracji.

Powiedzmy, że chcemy załadować plik „C:\newhtml.html”. Nasz kod WebDriver powinien wyglądać jak ten pokazany poniżej.
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();
}
}
Po uruchomieniu tego skryptu powinno być możliwe pomyślne przesłanie pliku i powinien pojawić się komunikat podobny do tego.
Pamiętaj o dwóch rzeczach podczas przesyłania plików w WebDriver
- Nie ma potrzeby symulowania kliknięcia przycisku „Przeglądaj”. WebDriver automatycznie wprowadza ścieżkę pliku do pola tekstowego wyboru pliku element
- Podczas ustawiania ścieżki pliku w pliku Java IDE, użyj odpowiedniego znaku ucieczki dla ukośnika odwrotnego.
Jak pobrać plik w formacie Selenium Sterownik internetowy
WebDriver nie ma możliwości dostępu do okien dialogowych pobierania prezentowane przez przeglądarki po kliknięciu łącza lub przycisku pobierania. Możemy jednak ominąć te okna dialogowe, używając oddzielnego programu o nazwie „wget”.
Co to jest Wget?
Wget to mały i łatwy w obsłudze program wiersza poleceń służący do automatyzacji pobierania. Zasadniczo uzyskamy dostęp do Wget z naszego skryptu WebDriver, aby przeprowadzić proces pobierania.
Konfigurowanie Wgeta
Krok 1) Na dysku C utwórz nowy folder i nadaj mu nazwę „Wget”.
Pobierz wget.exe stąd i umieść go w folderze Wget utworzonym w powyższym kroku.
Krok 2) Otwórz Uruchom naciskając klawisz Windows + „R”; wpisz „cmd” i kliknij OK
Wpisz polecenie „cd /”, aby przejść do katalogu głównego
Krok 3) Wpisz polecenie, aby sprawdzić, czy dana konfiguracja działa
cmd /c C:\\Wget\\wget.exe -P C: --no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe
Wygląda na to, że wystąpił problem z zapisem na dysk C.
Krok 4) Musisz debugować błędy wget w wierszu poleceń przed wykonaniem kodu za pomocą Selenium Sterownik internetowy. Te błędy będą się pojawiać w Eclipse a komunikaty o błędach nie będą tak pouczające. Najlepiej najpierw uruchomić wget za pomocą wiersza poleceń. Jeśli działa w wierszu poleceń, na pewno będzie działać Eclipse.
W naszym przykładzie, jak pokazano w kroku 3, wystąpił problem z zapisem na dysk C. Zmieńmy lokalizację pobierania na dysk D i sprawdźmy wyniki.
cmd /c C:\\Wget\\wget.exe -P D: --no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe
Messenger został pomyślnie pobrany.
Zanim przejdziesz dalej, nie zapomnij usunąć pobranego pliku
Korzystanie z WebDrivera i Wget
W poniższym przykładzie użyjemy WebDriver i wget, aby pobrać popularny program do czatów o nazwie Yahoo Messenger. Naszym podstawowym adresem URL będzie https://demo.guru99.com/test/yahoo.html.
Krok 1) Zaimportuj pakiet „java.io.IOException”, ponieważ później w kroku 4 będziemy musieli przechwycić wyjątek IOException.
Krok 2) Użyj metody getAttribute(), aby uzyskać wartość „href” łącza pobierania i zapisać ją jako zmienną typu String. W tym przypadku nazwaliśmy zmienną „sourceLocation”.
Krok 3) Skonfiguruj składnię dla polecenia wget za pomocą następującego polecenia.
Krok 4) Rozpocznij proces pobierania, wywołując wget z naszego kodu WebDriver.
Podsumowując, Twój kod WebDriver może wyglądać jak ten pokazany poniżej.
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();
}
}
Po wykonaniu tego kodu sprawdź dysk D i sprawdź, czy plik Yahoo Messenger Instalator został tam pomyślnie pobrany.
Podsumowanie
- Przesyłanie plików do programu WebDriver odbywa się po prostu za pomocą metody sendKeys() w polu wejściowym wyboru pliku w celu wprowadzenia ścieżki do pliku, który ma zostać przesłany.
- WebDriver nie może samodzielnie zautomatyzować pobierania plików.
- Najłatwiejszym sposobem pobierania plików za pomocą WebDrivera jest użycie Wget.












