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.

  • 📤 Üleslaadimise meetod: Kasutage faili sisendelemendil sendKeys() funktsiooni, et edastada absoluutne failitee ilma nuppu „Sirvi” klõpsamata.
  • 📥 Allalaadimise tee: Kohandatud allalaadimiskataloogi seadistamine ChromeOptionsi või CDP Page.setDownloadBehaviori kaudu Selenium 4.
  • 🪟 Natiivsed dialoogid: Käivitage AutoIt-skriptid või java.awt.Robot, kui operatsioonisüsteemi failivalija blokeerib WebDriveri suhtluse.
  • 🤖 AI abi: Generatiivne tehisintellekt pakub välja selektoreid, loob testandmefaile ja valideerib automaatselt allalaaditud failide terviklikkuse.
  • 🛡️ Kinnituskontroll: Kinnitage üleslaadimise edukust vastussõnumite kaudu ja kontrollige allalaadimisi faili suuruse või kontrollsumma võrdluse abil.

Kuidas faili üles laadida ja alla laadida, kasutades Selenium

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.

Laadi fail üles Selenium
Käsitsege faili üleslaadimise hüpikakent Selenium Veebidraiver

Oletame, et soovime üles laadida faili "C:\newhtml.html". Meie WebDriveri kood peaks olema selline, nagu allpool näidatud.

pakend uusprojekt;
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.

Laadi fail üles Selenium

WebDriveris failide üleslaadimisel pidage meeles kahte järgmist asja:

  1. „Sirvi“ nupu klõpsamist pole vaja simuleerida. WebDriver sisestab failitee automaatselt failivaliku tekstikasti. element.
  2. Kui määrate failitee oma Java IDE, kasutage kaldkriipsu jaoks õiget paomärki.

Laadi fail üles Selenium

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.

; upload.au3 – ootab avamisdialoogi ja sisestab failitee
WinWaitActive("Avatud")
Saada(„C:\newhtml.html”)
Saada(„{SISESTA}”)

alates Java, käivitab abilise pärast sirvimisklõpsu:

driver.findElement(By.id()„sirvimisnupp”)).klikk();
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.

Wgeti seadistamine

Step 2) Avage käsk Käivita, vajutades Windows klahv + „R”; tippige „cmd” ja klõpsake nuppu OK.

Wgeti seadistamine

Juurkataloogi liikumiseks tippige käsk „cd /”.

Wgeti seadistamine

Step 3) Tippige käsk, et kontrollida, kas antud seadistus töötab.

cmd /c C:\\Wget\\wget.exe -PC: –kontrolli sertifikaati pole https://demo.guru99.com/selenium/msgr11us.exe

Wgeti seadistamine

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.

cmd /c C:\\Wget\\wget.exe -PD: –kontrolli sertifikaati pole https://demo.guru99.com/selenium/msgr11us.exe

Wgeti seadistamine

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.

WebDriveri ja Wgeti kasutamine

Step 1) Importige pakett „java.io.IOException”, kuna peame IOExceptioni hiljem 4. sammus kinni püüdma.

WebDriveri ja Wgeti kasutamine

Step 2) Allalaadimislingi „href” väärtuse saamiseks ja selle salvestamiseks stringmuutujana kasutage funktsiooni getAttribute(). Antud juhul panime muutujale nimeks „sourceLocation”.

WebDriveri ja Wgeti kasutamine

Step 3) Seadistage wgeti süntaks järgmise käsu abil.

WebDriveri ja Wgeti kasutamine

Step 4) Käivitage allalaadimisprotsess, helistades meie WebDriveri koodist wget-le.

WebDriveri ja Wgeti kasutamine

Selle kõige kokkuvõtteks võib teie WebDriveri kood välja näha nagu allpool näidatud.

pakend uusprojekt;
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.

WebDriveri ja Wgeti kasutamine

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.

ChromeDriver juht = uus ChromeDriver();
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.

KKK

Selenium kutsub sendKeys() funktsiooni element absoluutse failiteega. Brauser täidab välja otse, seega ei avane operatsioonisüsteemi failivalijat ja pole vaja klõpsata nupul „Sirvi”.

Kui leht ei kuva faili sisendit, kasutage funktsiooni AutoIt. Windows või klass java.awt.Robot. Need tööriistad tippivad tee aktiivse operatsioonisüsteemi dialoogiboksi ja pärast nupule „Sirvi” klõpsamist vajutavad nad sisestusklahvi (Enter).

Käivita executeCdpCommand(“Page.setDownloadBehavior”, params) funktsiooniga, mille käitumiseks on seatud „luba“ ja allalaadimistee (downloadPath) sinu kausta nimi. Selenium 4 edastab käsu Chrome DevToolsile ja käsk „Salvesta nimega” jäetakse vahele.

Jah. Tehisintellekti assistendid loevad teie üleslaadimisvormi, pakuvad välja selektoreid, genereerivad piirifaile, näiteks tühje, ülemõõdulisi või vale laiendusega näidiseid, ja kirjutavad sendKeys() ploki. See lühendab seadistusaega ja paljastab ääremärke, mida inimtestijad sageli kahe silma vahele jätavad.

Tehisintellekti tööriistad Küsitlege sihtkausta, võrrelge faili suurust ja kontrollsummat eeldatavate väärtustega ning märkige mittevastavused. Visioonimudelid saavad isegi avada PDF-faile või pilte ja kinnitada, et sisu vastab lingi sildile, eemaldades käsitsi ülevaatuse regressioonianalüüsidest.

Wget möödub brauserist täielikult ja salvestab faili otse kettale käsureaprotsessi kaudu. See on kasulik vanemates versioonides. Selenium 2 või 3 seadistust, kus CDP ja ChromeOptionsi allalaadimiseelistused pole saadaval.

Võta see postitus kokku järgmiselt: