Kuidas faili üles laadida ja alla laadida, kasutades Selenium
⚡ Nutikas kokkuvõte
Laadige fail üles ja laadige see alla, kasutades Selenium WebDriveri töövood tuginevad sisestusväljade puhul natiivsetele sendKeys() funktsioonidele, dialoogide puhul AutoIt või Robot funktsioonidele ja CDP käskudele. Selenium 4 turvaliste allalaadimisteede määramiseks automatiseerimise ajal.

WebDriveris saab faile üles laadida lihtsalt failivaliku väljal meetodi sendKeys() abil, et sisestada üleslaaditava faili tee. Selles õpetuses saate teada, kuidas failide üles- ja allalaadimisega toime tulla, kasutades Selenium Veebidraiver.
Kuidas faili üles laadida Selenium
Selle jaotise jaoks kasutame https://demo.guru99.com/test/upload/ kui meie testrakendus. See sait võimaldab igal külastajal hõlpsasti faile üles laadida, ilma et nad peaksid registreeruma.

Oletame, et soovime üles laadida faili "C:\newhtml.html". Meie WebDriveri kood peaks olema selline, nagu allpool näidatud.
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxJuht;
avalik klass PG9 {
avalik staatiline tühimik peamine(nöör[] argumendid) {
System.setProperty(„veebidraiver.gecko.draiver”,„C:\geckodriver.exe”);
nöör baasUrl = „https://demo.guru99.com/test/upload/”;
Veebidraiver juht = uus FirefoxJuht();
driver.get(baasUrl);
Veebielement uploadElement = driver.findElement(Autor: id()„üleslaadimisfail_0”));
// sisesta faili tee failivaliku sisestusväljale
üleslaadimiseElement.sendKeys(„C:\\uushtml.html”);
// märkige ruut „Nõustun teenusetingimustega”
driver.findElement(By.id()"tingimused")).klikk();
// klõpsa nupule „Laadi fail üles”
driver.findElement(By.name()"saada")).klikk();
}
}
Pärast selle skripti käivitamist peaksite saama faili edukalt üles laadida ja peaksite saama sarnase teate.
WebDriveris failide üleslaadimisel pidage meeles kahte järgmist asja:
- „Sirvi“ nupu klõpsamist pole vaja simuleerida. WebDriver sisestab failitee automaatselt failivaliku tekstikasti. element.
- Kui määrate failitee oma Java IDE, kasutage kaldkriipsu jaoks õiget paomärki.
Mittesisestuspõhiste üleslaadimisdialoogide käsitlemine AutoIt abil
Kui leht kasutab kohandatud sirvimisnuppu, mitte kohalikku nuppu element, sendKeys() ei tööta. Sellisel juhul saate kutsuda AutoIt skripti Selenium , et tippida operatsioonisüsteemi dialoogiboksi failitee ja vajutada sisestusklahvi.
Salvesta allolev skript nimega üleslaadimine.au3, kompileeri see üleslaadimine.exe, seejärel käivitage see Java pärast nupule „Sirvi” klõpsamist.
WinWaitActive("Avatud")
Saada(„C:\newhtml.html”)
Saada(„{SISESTA}”)
alates Java, käivitab abilise pärast sirvimisklõpsu:
Runtime.getRuntime().exec()„C:\AutoIt\upload.exe”);
Klass java.awt.Robot on puhas-Java alternatiiv, kui AutoIt pole saadaval, kuigi AutoIt on usaldusväärsem Windows sest see ootab dialoogi pealkirja järgi.
Kuidas faili alla laadida Selenium Veebidraiver
WebDriver ei saa juurdepääsu dialoogiboksidele Allalaadimine mida brauserid esitavad, kui klõpsate allalaadimislingil või -nupul. Kuid me saame neist dialoogiboksidest mööda minna, kasutades eraldi programmi nimega "wget".
Mis on Wget?
Wget on väike ja hõlpsasti kasutatav käsureaprogramm, mida kasutatakse allalaadimiste automatiseerimiseks. Põhimõtteliselt pääseme allalaadimisprotsessi läbiviimiseks juurde Wgetile meie WebDriveri skripti kaudu.
Wgeti seadistamine
Step 1) Looge oma C-draivis uus kaust ja nimetage see "Wget".
Laadige alla wget.exe siit ja asetage see ülaltoodud etapis loodud Wget kausta.
Step 2) Avage käsk Käivita, vajutades Windows klahv + „R”; tippige „cmd” ja klõpsake nuppu OK.
Juurkataloogi liikumiseks tippige käsk „cd /”.
Step 3) Tippige käsk, et kontrollida, kas antud seadistus töötab.
Näib, et C-draivi kirjutamisel on probleem.
Step 4) Enne koodi käivitamist käsurealt peate wget vead siluma, kasutades Selenium WebDriver. Need vead jäävad püsima Eclipse ja veateated ei ole nii informatiivsed. Kõige parem on kõigepealt wget käsurealt tööle saada. Kui see töötab käsureal, töötab see kindlasti ka Eclipse.
Meie näites, nagu 3. etapis näidatud, on C-kettale kirjutamisel probleem. Muutame allalaadimise asukohaks D-ketta ja kontrollime tulemusi.
Messenger laaditi edukalt alla.
Enne jätkamist ärge unustage allalaaditud faili kustutada.
WebDriveri ja Wgeti kasutamine
Järgmises näites kasutame populaarse vestlustarkvara nimega Yahoo allalaadimiseks WebDriveri ja wget MessengerMeie baas URL saab olema https://demo.guru99.com/test/yahoo.html.
Step 1) Importige pakett „java.io.IOException”, kuna peame IOExceptioni hiljem 4. sammus kinni püüdma.
Step 2) Allalaadimislingi „href” väärtuse saamiseks ja selle salvestamiseks stringmuutujana kasutage funktsiooni getAttribute(). Antud juhul panime muutujale nimeks „sourceLocation”.
Step 3) Seadistage wgeti süntaks järgmise käsu abil.
Step 4) Käivitage allalaadimisprotsess, helistades meie WebDriveri koodist wget-le.
Selle kõige kokkuvõtteks võib teie WebDriveri kood välja näha nagu allpool näidatud.
import java.io.IOException;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxJuht;
avalik klass PG8 {
avalik staatiline tühimik peamine(nöör[] argumendid) {
System.setProperty(„veebidraiver.gecko.draiver”,„C:\geckodriver.exe”);
nöör baasUrl = „https://demo.guru99.com/test/yahoo.html”;
Veebidraiver juht = uus FirefoxJuht();
driver.get(baasUrl);
Veebielement allalaadimise nupp = driver.findElement(Autor: ID()„Messengeri allalaadimine”));
nöör allikasAsukoht = allalaadimise nupp.getAttribute(„href”);
nöör wget_command = „cmd /c C:\Wget\wget.exe -PD: –no-check-certificate“ + allikasAsukoht;
püüdma {
Protsess exec = Runtime.getRuntime().exec(wget_command);
int väljumisVal = exec.waitFor();
System.out.println(„Väljumisväärtus:“ + väljumisVal);
} saak (Katkestatud erand | IOE erand nt) {
System.out.println(nt.toString());
}
juht.sulge();
}
}
Pärast selle koodi käivitamist kontrollige oma D-draivi ja veenduge, et Yahoo Messenger installer laaditi sinna edukalt alla.
Kohandatud allalaadimistee määramine Selenium 4 CDP
Selenium 4. versioon avalikustab Chrome DevToolsi protokolli, mis võimaldab teil brauseri allalaadimiskäitumist ilma kolmandate osapoolte tööriistadeta juhtida. Allolev koodilõik suunab kõik allalaadimised kohandatud kausta ja jätab vahele käsu „Salvesta nimega”, nii et failid jõuavad sinna, kuhu test neid ootab.
kaart<nöör,objekt> parameetrid = uus HashMap<>();
params.put("käitumine", "lubama");
params.put(„Allalaadimisrada”, „D:\\seleeni-allalaadimised”);
driver.executeCdpCommand(„Page.setDownloadBehavior”, parameetrid);
draiver.get(„https://demo.guru99.com/test/yahoo.html”);
driver.findElement(By.id()„Messengeri allalaadimine”)).klikk();
Allalaadimise kontrollimiseks küsitlege sihtkataloogi oodatava failinime ja kontrollige selle suurust, mis muudab testi deterministlikuks ilma väliste skriptideta.












