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.

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.

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.

Prześlij plik w Selenium

Pamiętaj o dwóch rzeczach podczas przesyłania plików w WebDriver

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

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.

Konfigurowanie Wgeta

Krok 2) Otwórz Uruchom naciskając klawisz Windows + „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 dana konfiguracja działa

cmd /c C:\\Wget\\wget.exe -P C: --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) 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

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 Messenger. Naszym podstawowym adresem URL 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 metody getAttribute(), aby uzyskać wartość „href” łącza pobierania 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 za pomocą 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.

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.

Korzystanie z WebDrivera i Wget

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.

Podsumuj ten post następująco: