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.

  • 📤 Metoda przesyłania: Użyj sendKeys() w elemencie wejściowym pliku, aby przesłać absolutną ścieżkę do pliku bez klikania Przeglądaj.
  • 📥 Ścieżka pobierania: Skonfiguruj niestandardowy katalog pobierania za pomocą ChromeOptions lub CDP Page.setDownloadBehavior w Selenium 4.
  • 🪟 Dialogi rodzime: Uruchamiaj skrypty AutoIt lub java.awt.Robot, gdy selektor plików systemu operacyjnego zablokuje interakcję z WebDriver.
  • 🤖 Pomoc AI: Generatywna AI sugeruje selektory, tworzy pliki danych testowych i automatycznie weryfikuje integralność pobranych plików.
  • 🛡️ Kontrola poprawności: Potwierdź pomyślne przesłanie za pomocą wiadomości odpowiedzi i zweryfikuj pobieranie, porównując rozmiar pliku lub sumę kontrolną.

Jak przesłać i pobrać plik za pomocą Selenium

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.

Prześlij plik w Selenium
Obsługuj wyskakujące okienko przesyłania pliku Selenium Sterownik internetowy

Powiedzmy, że chcemy załadować plik „C:\newhtml.html”. Nasz kod WebDriver powinien wyglądać jak ten pokazany poniżej.

pakiet nowyprojekt;
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.

Prześlij plik w Selenium

Przesyłając pliki w WebDriver pamiętaj o dwóch rzeczach:

  1. Nie ma potrzeby symulowania kliknięcia przycisku „Przeglądaj”. WebDriver automatycznie wpisuje ścieżkę do pliku w polu wyboru pliku. element.
  2. Podczas ustawiania ścieżki pliku w pliku Java IDE, użyj odpowiedniego znaku ucieczki dla ukośnika odwrotnego.

Prześlij plik w Selenium

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.

; upload.au3 – czeka na okno dialogowe Otwórz i wpisuje ścieżkę do pliku
WinWaitActive("Otwarty")
Wysłać(„C:\nowyhtml.html”)
Wysłać("{WCHODZIĆ}")

Od Java, uruchom pomocnika po kliknięciu Przeglądaj:

driver.findElement(By.id(„przeglądajBtn”)).trzask();
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.

Konfigurowanie Wgeta

Krok 2) Otwórz Run, naciskając Windows klawisz + „R”; wpisz „cmd” i kliknij OK.

Konfigurowanie Wgeta

Wpisz polecenie „cd /”, aby przejść do katalogu głównego.

Konfigurowanie Wgeta

Krok 3) Wpisz polecenie, aby sprawdzić, czy podana konfiguracja działa.

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

Konfigurowanie Wgeta

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.

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

Konfigurowanie Wgeta

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.

Korzystanie z WebDrivera i Wget

Krok 1) Zaimportuj pakiet „java.io.IOException”, ponieważ później w kroku 4 będziemy musieli przechwycić wyjątek IOException.

Korzystanie z WebDrivera i Wget

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”.

Korzystanie z WebDrivera i Wget

Krok 3) Skonfiguruj składnię dla polecenia wget, używając następującego polecenia.

Korzystanie z WebDrivera i Wget

Krok 4) Rozpocznij proces pobierania, wywołując wget z naszego kodu WebDriver.

Korzystanie z WebDrivera i Wget

Podsumowując, Twój kod WebDriver może wyglądać jak ten pokazany poniżej.

pakiet nowyprojekt;
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.

Korzystanie z WebDrivera i Wget

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.

Sterownik Chrome kierowca = nowych Sterownik Chrome();
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.

FAQ

Selenium wywołuje sendKeys() na element z bezwzględną ścieżką do pliku. Przeglądarka wypełnia pole bezpośrednio, więc nie otwiera się selektor plików systemu operacyjnego ani nie trzeba klikać przycisku Przeglądaj.

Jeśli strona nie udostępnia pliku wejściowego, użyj AutoIt Windows lub klasa java.awt.Robot. Te narzędzia wpisują ścieżkę w oknie dialogowym aktywnego systemu operacyjnego i naciskają Enter po kliknięciu przycisku Przeglądaj.

Wywołaj executeCdpCommand(“Page.setDownloadBehavior”, params) z zachowaniem ustawionym na allow i downloadPath ustawionym na Twój folder. Selenium 4 przekazuje polecenie do Chrome DevTools, a monit Zapisz jako jest pomijany.

Tak. Asystenci AI odczytują formularz przesyłania, sugerują selektory, generują pliki graniczne, takie jak puste, za duże lub z błędnymi rozszerzeniami, i piszą blok sendKeys(). Skraca to czas konfiguracji i ujawnia przypadki brzegowe, które często pomijają testerzy.

Narzędzia AI Przeszukują folder docelowy, porównują rozmiar pliku i sumę kontrolną z wartościami oczekiwanymi oraz sygnalizują niezgodności. Modele wizyjne potrafią nawet otwierać pliki PDF lub obrazy i potwierdzać zgodność zawartości z etykietą linku, eliminując konieczność ręcznej weryfikacji podczas regresji.

Wget całkowicie pomija przeglądarkę i zapisuje plik bezpośrednio na dysk za pomocą wiersza poleceń. Jest przydatny w starszych wersjach. Selenium 2 lub 3 konfiguracje, w których preferencje pobierania CDP i ChromeOptions są niedostępne.

Podsumuj ten post następująco: