Hogyan töltsünk fel és töltsünk le egy fájlt a segítségével Selenium
⚡ Okos összefoglaló
Fájl feltöltése és letöltése a következővel: Selenium A WebDriver munkafolyamatok a beviteli mezőkhöz a natív sendKeys() metódusra, a párbeszédpanelekhez az AutoIt vagy a Robot metódusra, a CDP parancsokhoz pedig a következő függvényekre támaszkodnak: Selenium 4. biztonságos letöltési útvonalak beállításához az automatizálási futtatások során.

A WebDriverben a fájlok feltöltése egyszerűen a sendKeys() metódus használatával történik a fájlkiválasztási beviteli mezőben, ahol megadható a feltöltendő fájl elérési útja. Ebben az oktatóanyagban megtanulod, hogyan kezelheted a fájlok feltöltését és letöltését a következő módszerrel: Selenium WebDriver.
Hogyan töltsünk fel fájlt Selenium
Ehhez a szakaszhoz fogjuk használni https://demo.guru99.com/test/upload/ mint tesztalkalmazásunk. Ez az oldal könnyen lehetővé teszi bármely látogató számára, hogy regisztráció nélkül töltsön fel fájlokat.

Tegyük fel, hogy a „C:\newhtml.html” fájlt szeretnénk feltölteni. A WebDriver kódunknak az alábbihoz hasonlónak kell lennie.
importál org.openqa.szelén.*;
importál org.openqa.selenium.firefox.FirefoxDrivers;
nyilvános osztály PG9 {
nyilvános statikus űr fő(Húr[] argumentumok) {
System.setProperty(„webdriver.gecko.driver”,„C:\geckodriver.exe”);
Húr alapUrl = „https://demo.guru99.com/test/upload/”;
webdriver sofőr = új FirefoxIllesztőprogram();
driver.get(alapUrl);
WebElem uploadElement = driver.findElement(By.id()„feltöltési_fájl_0”));
// írd be a fájl elérési útját a fájlkiválasztó beviteli mezőbe
uploadElement.sendKeys(„C:\\újhtml.html”);
// jelölje be az „Elfogadom a szolgáltatási feltételeket” jelölőnégyzetet
driver.findElement(By.id()„feltételek”)).kattintás();
// kattints a „Fájl feltöltése” gombra
driver.findElement(By.name()"elküld")).kattintás();
}
}
A szkript futtatása után sikeresen feltöltheti a fájlt, és ehhez hasonló üzenetet kell kapnia.
Fájlok WebDriverben történő feltöltésekor ne feledkezzen meg a következő két dologról:
- Nem kell a „Tallózás” gombra kattintást szimulálni. A WebDriver automatikusan beírja a fájl elérési útját a fájlkiválasztó szövegmezőbe. elem.
- Amikor beállítja a fájl elérési útját a Java IDE, használja a megfelelő escape karaktert a fordított perjelhez.
Nem bemeneti feltöltési párbeszédablakok kezelése az AutoIt segítségével
Amikor az oldal egyéni Tallózás gombot használ egy natív helyett elem esetén a sendKeys() nem működik. Ebben az esetben meghívhat egy AutoIt szkriptet a következőből: Selenium írja be a fájl elérési útját az operációs rendszer párbeszédpaneljébe, majd nyomja meg az Enter billentyűt.
Mentse el az alábbi szkriptet más néven feltöltés.au3, fordítsd le úgy, hogy feltöltés.exe, majd hívd meg innen Java a Tallózás gombra kattintás után.
WinWaitActive("Nyisd ki")
Elküld(„C:\újhtml.html”)
Elküld(„{ENTER}”)
tól Java, a Tallózás gombra kattintás után indítsa el a segítőt:
Runtime.getRuntime().exec()„C:\AutoIt\upload.exe”);
A java.awt.Robot osztály egy tisztaJava alternatíva, ha az AutoIt nem érhető el, bár az AutoIt megbízhatóbb a következő esetekben: Windows mert cím szerint várja a párbeszédablakot.
Hogyan lehet letölteni egy fájlt a Selenium Webdriver
A WebDriver nem tudja elérni a Letöltés párbeszédpaneleket a böngészők megjelenítik, amikor egy letöltési hivatkozásra vagy gombra kattint. Ezeket a párbeszédpaneleket azonban megkerülhetjük egy különálló „wget” programmal.
Mi az a Wget?
A Wget egy kicsi és könnyen használható parancssori program, amely a letöltések automatizálására szolgál. Alapvetően a Wget-et a WebDriver szkriptünkből fogjuk elérni a letöltési folyamat végrehajtásához.
A Wget beállítása
Step 1) A C meghajtóban hozzon létre egy új mappát, és nevezze el „Wget”-nek.
Töltse le a wget.exe fájlt innen és helyezd el a fenti lépésben létrehozott Wget mappába.
Step 2) Nyissa meg a Futtatás gombot a megnyomásával Windows billentyű + „R”; írja be a „cmd” parancsot, majd kattintson az OK gombra.
Írja be a „cd /” parancsot a gyökérkönyvtárba való ugráshoz.
Step 3) Írd be a parancsot, hogy ellenőrizd, működik-e a megadott beállítás.
Úgy tűnik, hogy probléma van a C meghajtóba való írással.
Step 4) A kód futtatása előtt a parancssorban kell hibakeresned a wget hibákat a következővel: Selenium WebDriver. Ezek a hibák továbbra is fennállnak a Eclipse és a hibaüzenetek nem lesznek annyira informatívak. A legjobb, ha először a parancssorból működteted a wget-et. Ha a parancssorban működik, akkor biztosan működni fog a következőben is: Eclipse.
A példánkban, ahogy a 3. lépésben látható, probléma van a C meghajtóra való írással. Változtassuk meg a letöltési helyet a D meghajtóra, és nézzük meg az eredményeket.
Messenger sikeresen letöltötte.
Mielőtt továbblépnél, ne felejtsd el törölni a letöltött fájlt.
WebDriver és Wget használata
A következő példában a WebDriver és a wget segítségével töltjük le a Yahoo nevű népszerű csevegőszoftvert MessengerA bázisunk URL kell lennie https://demo.guru99.com/test/yahoo.html.
Step 1) Importálja a „java.io.IOException” csomagot, mert később, a 4. lépésben el kell fognunk egy IOException-t.
Step 2) A getAttribute() függvénnyel kérd le a letöltési link „href” értékét, és mentsd el String változóként. Ebben az esetben a változót „sourceLocation”-nek neveztük el.
Step 3) Állítsa be a wget szintaxisát a következő paranccsal.
Step 4) Indítsa el a letöltési folyamatot a wget meghívásával a WebDriver kódunkból.
Összefoglalva, a WebDriver kódja az alábbiak szerint nézhet ki.
importál java.io.IOException;
importál org.openqa.szelén.*;
importál org.openqa.selenium.firefox.FirefoxDrivers;
nyilvános osztály PG8 {
nyilvános statikus űr fő(Húr[] argumentumok) {
System.setProperty(„webdriver.gecko.driver”,„C:\geckodriver.exe”);
Húr alapUrl = „https://demo.guru99.com/test/yahoo.html”;
webdriver sofőr = új FirefoxIllesztőprogram();
driver.get(alapUrl);
WebElem downloadButton = driver.findElement(By.id()„Messenger letöltés”));
Húr forrásHely = letöltésgomb.getAttribute(„href”);
Húr wget_command = „cmd /c C:\Wget\wget.exe -PD: –no-check-certificate” + forrásHelyszín;
megpróbál {
folyamat exec = Runtime.getRuntime().exec(wget_command);
int kilépésÉrték = exec.waitFor();
System.out.println(„Kilépési érték:” + kilépésiÉrték);
} fogás (MegszakítvaKivétel | IOException pl.) {
System.out.println(pl.toString());
}
driver.close();
}
}
A kód végrehajtása után ellenőrizze a D meghajtót, és ellenőrizze, hogy a Yahoo Messenger a telepítő sikeresen letöltődött onnan.
Egyéni letöltési útvonal beállítása a következővel: Selenium 4 CDP
Selenium A 4-es verzió elérhetővé teszi a Chrome DevTools protokollt, amely lehetővé teszi a böngésző letöltési viselkedésének szabályozását harmadik féltől származó eszközök nélkül. Az alábbi kódrészlet minden letöltést egy egyéni mappába irányít, és kihagyja a „Mentés másként” promptot, így a fájlok oda kerülnek, ahová a teszt várta őket.
Térkép<Húr,tárgy> paraméterek = új HashMap<>();
params.put("viselkedés", "lehetővé teszi");
params.put(„letöltési útvonal”, „D:\\szelén-letöltések”);
illesztőprogram.executeCdpCommand(„Page.setDownloadBehavior”, paraméterek);
illesztőprogram.get(„https://demo.guru99.com/test/yahoo.html”);
driver.findElement(By.id()„Messenger letöltés”)).kattintás();
A letöltést úgy ellenőrizheted, hogy lekérdezed a célkönyvtárat a várt fájlnév után, és ellenőrzöd a méretét, ami külső szkriptek nélkül determinisztikus tesztet eredményez.












