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.

  • 📤 Feltöltési módszer: A file input elemen a sendKeys() metódussal a Browse gombra kattintás nélkül küldheti el az abszolút fájlelérési utat.
  • 📥 Letöltési útvonal: Egyéni letöltési könyvtár konfigurálása a ChromeOptions vagy a CDP Page.setDownloadBehavior segítségével a Selenium 4.
  • 🪟 Natív párbeszédablakok: AutoIt szkriptek vagy java.awt.Robot futtatása, amikor az operációs rendszer fájlválasztója blokkolja a WebDriver interakcióját.
  • 🤖 AI segítség: A generatív mesterséges intelligencia automatikusan javasol szelektorokat, létrehozza a tesztadatfájlokat, és ellenőrzi a letöltött fájlok integritását.
  • 🛡️ Érvényesítési ellenőrzés: A feltöltés sikerességét válaszüzenetekkel erősítse meg, és ellenőrizze a letöltéseket fájlméret vagy ellenőrzőösszeg-összehasonlítás segítségével.

Hogyan töltsünk fel és töltsünk le egy fájlt a segítségével Selenium

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.

Fájl feltöltése Selenium
Fájlfeltöltés előugró ablak kezelése Selenium Webdriver

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.

csomag új projekt;
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ájl feltöltése Selenium

Fájlok WebDriverben történő feltöltésekor ne feledkezzen meg a következő két dologról:

  1. 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.
  2. 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.

Fájl feltöltése Selenium

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.

; upload.au3 – megvárja a Megnyitás párbeszédpanelt, és beírja a fájl elérési útját
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:

driver.findElement(By.id()„böngészés gomb”)).kattintás();
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.

A Wget beállítása

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.

A Wget beállítása

Írja be a „cd /” parancsot a gyökérkönyvtárba való ugráshoz.

A Wget beállítása

Step 3) Írd be a parancsot, hogy ellenőrizd, működik-e a megadott beállítás.

cmd /c C:\\Wget\\wget.exe -PC: –no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe

A Wget beállítása

Ú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.

cmd /c C:\\Wget\\wget.exe -PD: –no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe

A Wget beállítása

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.

WebDriver és Wget használata

Step 1) Importálja a „java.io.IOException” csomagot, mert később, a 4. lépésben el kell fognunk egy IOException-t.

WebDriver és Wget használata

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.

WebDriver és Wget használata

Step 3) Állítsa be a wget szintaxisát a következő paranccsal.

WebDriver és Wget használata

Step 4) Indítsa el a letöltési folyamatot a wget meghívásával a WebDriver kódunkból.

WebDriver és Wget használata

Összefoglalva, a WebDriver kódja az alábbiak szerint nézhet ki.

csomag új projekt;
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.

WebDriver és Wget használata

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.

ChromeDriver sofőr = új ChromeDriver();
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.

GYIK

Selenium meghívja a sendKeys() függvényt a következőn: elem az abszolút fájlútvonallal. A böngésző közvetlenül kitölti a mezőt, így nem nyílik meg az operációs rendszer fájlválasztója, és nem kell a Tallózás gombra kattintani.

Ha az oldal nem jelenít meg fájlbemenetet, használja az AutoIt funkciót. Windows vagy a java.awt.Robot osztály. Ezek az eszközök beírják az elérési utat az aktív operációs rendszer párbeszédablakába, majd a Tallózás gombra kattintás után megnyomják az Enter billentyűt.

Hívja meg az executeCdpCommand(“Page.setDownloadBehavior”, params) függvényt az allow értékre állított viselkedéssel, a downloadPath pedig a mappára mutató downloadPath paraméterrel. Selenium A 4-es parancs továbbítja a parancsot a Chrome DevTools-nak, és a Mentés másként prompt kimarad.

Igen. A mesterséges intelligencia asszisztensei beolvassák a feltöltési űrlapodat, választókat javasolnak, határfájlokat generálnak, például üres, túlméretezett vagy rossz kiterjesztésű mintákat, és megírják a sendKeys() blokkot. Ez lerövidíti a beállítási időt, és feltárja azokat a peremhelyzeteket, amelyeket az emberi tesztelők gyakran nem vesznek észre.

AI eszközök Lekérdezhetik a célmappát, összehasonlíthatják a fájlméretet és az ellenőrzőösszeget a várt értékekkel, és megjelölhetik az eltéréseket. A látásmodellek akár PDF-eket vagy képeket is megnyithatnak, és ellenőrizhetik, hogy a tartalom megegyezik-e a hivatkozás címkéjével, így kiküszöbölhetik a manuális ellenőrzést a regressziós futtatásokból.

A Wget teljesen megkerüli a böngészőt, és egy parancssori folyamaton keresztül közvetlenül a lemezre menti a fájlt. Hasznos régebbi rendszereken. Selenium 2 vagy 3 olyan beállítás, ahol a CDP és a ChromeOptions letöltési beállításai nem érhetők el.

Foglald össze ezt a bejegyzést a következőképpen: