Jak przesłać i pobrać plik za pomocą Selenium
⚡ Inteligentne podsumowanie
Prześlij i pobierz plik za pomocą Selenium Przepływy pracy WebDriver opierają się na natywnym sendKeys() dla pól wprowadzania, AutoIt lub Robot dla okien dialogowych i poleceniach CDP w Selenium 4, aby ustawić bezpieczne ścieżki pobierania podczas automatyzacji.

Przesyłanie plików w WebDriver odbywa się poprzez użycie metody sendKeys() w polu wyboru pliku, aby wprowadzić ścieżkę do pliku, który ma zostać przesłany. W tym samouczku dowiesz się, jak obsługiwać przesyłanie i pobieranie plików za pomocą Selenium Sterownik sieciowy.
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.
importować org.openqa.selenium.*;
importować org.openqa.selenium.firefox.FirefoxKierowcy;
Klasa publiczna PG9 {
publiczna statyczna pustka Główny(sznur[] argumenty) {
System.setProperty(„webdriver.gecko.driver”,„C:\\geckodriver.exe”);
sznur baseUrl = „https://demo.guru99.com/test/upload/”;
Sterownik sieciowy kierowca = nowych FirefoxKierowca();
sterownik.get(baseUrl);
Element internetowy uploadElement = driver.findElement(By.id(„prześlijplik_0”));
// wprowadź ścieżkę do pliku w polu wprowadzania wyboru pliku
uploadElement.sendKeys(„C:\\nowyhtml.html”);
// zaznacz pole wyboru „Akceptuję warunki korzystania z usługi”
driver.findElement(By.id("semestry")).trzask();
// kliknij przycisk „Prześlij plik”
driver.findElement(By.name("wysłać")).trzask();
}
}
Po uruchomieniu tego skryptu powinno być możliwe pomyślne przesłanie pliku i powinien pojawić się komunikat podobny do tego.
Przesyłając pliki w WebDriver pamiętaj o dwóch rzeczach:
- Nie ma potrzeby symulowania kliknięcia przycisku „Przeglądaj”. WebDriver automatycznie wpisuje ścieżkę do pliku w polu wyboru pliku. element.
- Podczas ustawiania ścieżki pliku w pliku Java IDE, użyj odpowiedniego znaku ucieczki dla ukośnika odwrotnego.
Obsługa okien dialogowych przesyłania danych bez wprowadzania danych za pomocą AutoIt
Gdy strona korzysta z niestandardowego przycisku Przeglądaj zamiast natywnego Element sendKeys() nie działa. W takim przypadku możesz wywołać skrypt AutoIt z Selenium Aby wpisać ścieżkę do pliku w oknie dialogowym systemu operacyjnego, naciśnij Enter.
Zapisz poniższy skrypt jako upload.au3, skompiluj to do upload.exe, a następnie wywołaj go z Java po kliknięciu przycisku Przeglądaj.
WinWaitActive("Otwarty")
Wysłać(„C:\nowyhtml.html”)
Wysłać("{WCHODZIĆ}")
Od Java, uruchom pomocnika po kliknięciu Przeglądaj:
Czas pracy.getRuntime().exec(„C:\\AutoIt\\upload.exe”);
Klasa java.awt.Robot jest klasą czysto-Java alternatywa, gdy AutoIt nie jest dostępny, chociaż AutoIt jest bardziej niezawodny Windows ponieważ oczekuje na dialog według tytułu.
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, który utworzyłeś w kroku powyżej.
Krok 2) Otwórz Run, naciskając Windows klawisz + „R”; wpisz „cmd” i kliknij OK.
Wpisz polecenie „cd /”, aby przejść do katalogu głównego.
Krok 3) Wpisz polecenie, aby sprawdzić, czy podana konfiguracja działa.
Wygląda na to, że wystąpił problem z zapisem na dysk C.
Krok 4) Przed wykonaniem kodu za pomocą polecenia wget należy debugować błędy w wierszu poleceń Selenium WebDriver. Te błędy będą się powtarzać 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ć w… Eclipse.
W naszym przykładzie, jak pokazano w kroku 3, występuje problem z zapisem na dysku C. Zmieńmy lokalizację pobierania na dysk D i sprawdźmy rezultaty.
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 MessengerNasza baza URL niech 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 getAttribute(), aby uzyskać wartość „href” linku do pobrania i zapisać ją jako zmienną typu String. W tym przypadku nazwaliśmy zmienną „sourceLocation”.
Krok 3) Skonfiguruj składnię dla polecenia wget, używając 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.
importować wyjątek java.io.IO;
importować org.openqa.selenium.*;
importować org.openqa.selenium.firefox.FirefoxKierowcy;
Klasa publiczna PG8 {
publiczna statyczna pustka Główny(sznur[] argumenty) {
System.setProperty(„webdriver.gecko.driver”,„C:\\geckodriver.exe”);
sznur baseUrl = „https://demo.guru99.com/test/yahoo.html”;
Sterownik sieciowy kierowca = nowych FirefoxKierowca();
sterownik.get(baseUrl);
Element internetowy pobierzButton = driver.findElement(By.id(„pobieranie komunikatora”));
sznur sourceLocation = downloadButton.getAttribute(„href”);
sznur wget_command = „cmd /c C:\\Wget\\wget.exe -PD: –no-check-certificate” + sourceLocation;
próbować {
Przetwarzanie exec = Runtime.getRuntime().exec(wget_command);
int exitVal = exec.waitFor();
System.out.println(„Wartość wyjścia:” + exitVal);
} łapać (Przerwany wyjątek | Wyjątek IO były) {
System.out.println(ex.toString());
}
sterownik.zamknij();
}
}
Po wykonaniu tego kodu sprawdź dysk D i sprawdź, czy plik Yahoo Messenger Instalator został tam pomyślnie pobrany.
Ustawianie niestandardowej ścieżki pobierania za pomocą Selenium 4 CDP
Selenium Wersja 4 udostępnia protokół Chrome DevTools, który pozwala kontrolować pobieranie plików przez przeglądarkę bez użycia narzędzi innych firm. Poniższy fragment kodu kieruje wszystkie pliki do folderu niestandardowego i pomija monit o zapisanie jako, dzięki czemu pliki trafiają tam, gdzie test ich oczekuje.
Mapa<sznur,przedmiot> parametry = nowych Mapa Hash<>();
parametry.put("zachowanie", "pozwolić");
parametry.put(„ścieżka pobierania”, „D:\\selenium-downloads”);
driver.executeCdpCommand(„Page.setDownloadBehavior”, parametry);
sterownik.get(„https://demo.guru99.com/test/yahoo.html”);
driver.findElement(By.id(„pobieranie komunikatora”)).trzask();
Możesz zweryfikować pobieranie, sprawdzając katalog docelowy pod kątem oczekiwanej nazwy pliku i sprawdzając jego rozmiar, dzięki czemu test będzie deterministyczny i nie będzie wymagał zewnętrznych skryptów.












