Jak przesyłać & Pobierz plik za pomocą Selenium Webdriver

Spisie treści:

Anonim

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ługa wyskakującego okienka przesyłania plików w Selenium Webdriver
obsłuż wyskakujące okienko przesyłania plików w selenium webdriver

Powiedzmy, ż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

  1. Nie ma potrzeby symulowania kliknięcia przycisku „Przeglądaj”. WebDriver automatycznie wprowadza ścieżkę do pliku w polu tekstowym wyboru pliku elementu
  2. 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.