W tym samouczku dowiemy się, jak radzić sobie z przesyłaniem i pobieraniem plików.
Przesyłanie plików
W tej sekcji użyjemy http://demo.guru99.com/test/upload/ jako naszej aplikacji testowej. Ta witryna z łatwością umożliwia każdemu odwiedzającemu przesyłanie plików bez konieczności rejestracji.
Przesyłanie plików do WebDriver odbywa się po prostu przy użyciu metody sendKeys () w polu wejściowym file-select, aby wprowadzić ścieżkę do pliku do przesłania.
obsłuż wyskakujące okienko przesyłania plików w selenium webdriverPowiedzmy, że chcemy załadować plik „C: \ newhtml.html”. Nasz kod WebDriver powinien wyglądać tak, jak pokazano poniżej.
pakiet newproject;import org.openqa.selenium. *;import org.openqa.selenium.firefox.FirefoxDriver;klasa publiczna PG9 {public static void main (String [] args) {System.setProperty ("webdriver.gecko.driver", "C: \\ geckodriver.exe");String baseUrl = "http://demo.guru99.com/test/upload/";Sterownik WebDriver = nowy FirefoxDriver ();driver.get (baseUrl);WebElement uploadElement = driver.findElement (By.id ("uploadfile_0"));// wprowadź ścieżkę do pliku w polu wejściowym wyboru plikuuploadElement.sendKeys ("C: \\ newhtml.html");// zaznacz pole wyboru „Akceptuję Warunki korzystania z usługi”driver.findElement (By.id ("warunki")). click ();// kliknij przycisk „Prześlij plik”driver.findElement (By.name ("wyślij")). click ();}}
Po uruchomieniu tego skryptu powinno być możliwe pomyślne przesłanie pliku i powinien zostać wyświetlony podobny komunikat.
Pamiętaj o następujących dwóch rzeczach podczas przesyłania plików do WebDriver
- Nie ma potrzeby symulowania kliknięcia przycisku „Przeglądaj”. WebDriver automatycznie wprowadza ścieżkę do pliku w polu tekstowym wyboru pliku elementu
- Ustawiając ścieżkę do pliku w środowisku Java IDE, użyj odpowiedniego znaku ucieczki jako ukośnika odwrotnego.
Pobieranie plików
WebDriver nie ma możliwości uzyskania dostępu do okien dialogowych pobierania wyświetlanych przez przeglądarki po kliknięciu łącza lub przycisku pobierania. Możemy jednak ominąć te okna dialogowe za pomocą osobnego programu o nazwie „wget”.
Co to jest Wget?
Wget to mały i łatwy w użyciu program wiersza poleceń służący do automatyzacji pobierania . Zasadniczo uzyskamy dostęp do Wget z naszego skryptu WebDriver, aby wykonać proces pobierania.
Konfigurowanie Wget
Krok 1: Na dysku C utwórz nowy folder i nazwij go „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 -PC: --no-check-certificate http://demo.guru99.com/selenium/msgr11us.exe
Wydaje się, że wystąpił problem z zapisem na dysk C.
Krok 4: Musisz zdebugować błędy wget w linii poleceń przed wykonaniem kodu za pomocą Selenium Webdriver. Te błędy będą się powtarzać w Eclipse, a komunikaty o błędach nie będą zawierały zbyt wielu informacji. Najlepiej najpierw uruchomić wget za pomocą wiersza poleceń. Jeśli działa w linii poleceń, na pewno będzie działać w Eclipse.
W naszym przykładzie, jak pokazano w kroku 3, występuje problem z zapisem na dysk C. Zmieńmy lokalizację pobierania na dysk D i sprawdźmy wyniki.
cmd / c C: \\ Wget \\ wget.exe -PD: --no-check-certificate http://demo.guru99.com/selenium/msgr11us.exe
Komunikator został pomyślnie pobrany.
Zanim przejdziesz dalej, nie zapomnij usunąć pobranego pliku
Korzystanie z WebDriver i Wget
W poniższym przykładzie użyjemy WebDriver i wget do pobrania popularnego oprogramowania do czatu o nazwie Yahoo Messenger. Nasz podstawowy adres URL to http://demo.guru99.com/test/yahoo.html.
Krok 1
Zaimportuj pakiet „java.io.IOException”, ponieważ będziemy musieli przechwycić wyjątek IOException w dalszej części kroku 4.
Krok 2
Użyj metody getAttribute (), aby uzyskać wartość „href” łącza pobierania i zapisz ją jako zmienną typu String. W tym przypadku nazwaliśmy zmienną „sourceLocation”.
Krok 3
Skonfiguruj składnię 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 mógłby wyglądać jak ten pokazany poniżej.
pakiet newproject;import java.io.IOException;import org.openqa.selenium. *;import org.openqa.selenium.firefox.FirefoxDriver;klasa publiczna PG8 {public static void main (String [] args) {System.setProperty ("webdriver.gecko.driver", "C: \\ geckodriver.exe");String baseUrl = "http://demo.guru99.com/test/yahoo.html";Sterownik WebDriver = nowy FirefoxDriver ();driver.get (baseUrl);WebElement downloadButton = driver.findElement (wg.id ("pobieranie posłańca"));String sourceLocation = downloadButton.getAttribute ("href");String wget_command = "cmd / c C: \\ Wget \\ wget.exe -PD: --no-check-certificate" + sourceLocation;próbować {Proces exec = Runtime.getRuntime (). Exec (wget_command);int exitVal = exec.waitFor ();System.out.println ("Wartość wyjścia: + exitVal);} catch (InterruptedException | IOException ex) {System.out.println (ex.toString ());}driver.close ();}}
Po wykonaniu tego kodu sprawdź dysk D i upewnij się, że instalator Yahoo Messenger został tam pomyślnie pobrany.
Podsumowanie
- Przesyłanie plików do WebDriver odbywa się po prostu przy użyciu metody sendKeys () w polu wejściowym file-select, aby wprowadzić ścieżkę do pliku do przesłania.
- WebDriver nie może samodzielnie zautomatyzować pobierania plików.
- Najłatwiejszym sposobem pobierania plików za pomocą WebDriver jest użycie Wget.