Csillám Üdvözlőlap Expressz — segédlet

Advanced Test Automation · Introduction to Selenium · 2. önálló hét


Miért kaptál új oldalt?

A feladatleírásban az American Greetings szerepelt, tartaléknak a 123 Greetings, később a

123cards. Mindegyikkel gond van, és egyik sem a te hibád:

ingyenes kiút nélkül, és a listán semmi nem jelöli, melyik melyik.

Ezért kaptál egy saját gyakorlóoldalt, ami ugyanazokat a készségeket kéri, de nincs benne

fizetési fal, és egyetlen valódi e-mail sem megy ki senkinek.

A főoldal
A főoldal

Igen, szándékosan ilyen ronda. A felugró ablakok, a süti-sáv és a késleltetések is szándékosak:

pontosan ezek adják a feladat tanulnivalóját.


Az oldal

URL: https://csillam-expressz.pages.dev/

Fontos tudnivaló: az oldalnak nincs szervere. A „szerverválaszt" JavaScript szimulálja —

késleltetéssel és töltés­jelzővel. Az adataid a böngésző tárolójában élnek.

Ebből következik két dolog:

1. A bot friss böngésző­profilban indul, ezért a belépés szabálya nyilvános:

bármilyen érvényes e-mail + legalább 8 karakteres, számot tartalmazó jelszó belép.

2. Az „Elküldött lapjaim" lista annak a böngészőnek a tárolójából olvas, amelyikben küldtél.

A bot futása alatt küldött lapok tehát a bot böngészőjében látszanak — ott ellenőrizd.


Lépésről lépésre

1. Regisztrálj kézzel

A regisztracio.html oldalon van egy egyszerű biztonsági kérdés (összeadás) — ezért ezt

te csináld, böngészőben, ne a bot. A belépésen nincs ilyen.

⚠️ A jelszó legyen legalább 8 karakter, és tartalmazzon számot — különben a belépés elutasít.

2. Tedd biztonságba a jelszavad

Ez a 2. task másik fele. A jelszó soha ne kerüljön a .java fájlba:

A .gitignore-t még az első commit előtt írd meg. Egy jelszó, ami egyszer bekerült a

git history-ba, akkor is ott marad, ha a következő commitban törlöd.

Ellenőrzés: git status, és a credentials fájl nem szerepel a követendő fájlok között.

3. Írd meg a bejelentkező botot

Mező Lokátor
E-mailid="email"
Jelszóid="jelszo"
Belépés gombid="belep-gomb"
Hibaüzenet (ha van)id="hiba"

A gomb megnyomása után 1,5 másodpercig egy töltés­jelző látszik, és csak utána dől el,

hogy sikerült-e. Sikeres belépésnél az oldal a lapok.html-re vált — erre érdemes várni.

⚠️ A süti-sáv a lap alján fixen ott ül, és eltakarhatja a gombokat:

ElementClickInterceptedException. Előbb kattintsd el: id="cookie-elfogad".

4. Válassz lapot

A lapok.html-en 30 lap van, id="kategoria" legördülővel szűrve — ez a Select osztály terepe.

A prémium lapok nem küldhetők (matrica jelzi őket, kattintásra felugró ablak jön). Válassz

olyat, aminek data-premium="false" az attribútuma — így a botod biztosan jó lapot fog.

A lapok oldal
A lapok oldal

A lapok oldalon 6 másodperc után felugrik egy reklám. Ha épp akkor kattintanál, elfogja a

kattintást — zárd be: id="reklam-bezar".

5. Küldj egy lapot — itt tanulod a wait-et

A kuldes.html űrlapja lépcsőzetes:

És most jön a csavar:

> Ezek a mezők végig ott vannak a DOM-ban, csak rejtve.

Vagyis a driver.findElement(...) meg fogja találni őket a Tovább előtt is — nem kapsz

NoSuchElementException-t. Aztán amikor beleírnál, elszáll:

```

org.openqa.selenium.ElementNotInteractableException: element not interactable

```

Ez nem bug, és nem a te kódod hibája. Pontosan az a helyzet, amire az explicit wait való:

nem az kell, hogy az elem *létezzen*, hanem hogy láthatóvá és használhatóvá váljon.

Amit érdemes megnézned a dokumentációban:

Lokátorok a küldőoldalon:

Mező Lokátor Mikor használható
Feladó neveid="felado-nev"azonnal
Tovább gombid="tovabb-gomb"azonnal
Címzett neveid="cimzett-nev"csak a Tovább után
Címzett e-mailid="cimzett-email"csak a Tovább után
Tárgyid="targy"csak a Tovább után
Üzenetid="uzenet"csak a Tovább után
Mikor menjenid="mikor" (select)csak a Tovább után
Küldés gombid="kuldes-gomb"csak a Tovább után
Visszaigazolásid="visszaigazolas"a küldés után ~1,8 mp
Küldési azonosítóid="kuldes-azonosito"a küldés után

Bónusz: ha a #mikor legördülőt „Később"-re állítod, megjelenik egy dátum-blokk három további

legördülővel (#nap, #honap, #ora).

6. Küldj többet, fájlból

A 4. task: 3–5 címzett + üzenet párt tárolj fájlban (properties, CSV, JSON — a te döntésed),

és a bot mindenkinek küldje el a lapot a saját, személyre szabott üzenetével.

Ez az előző lépés ciklusba téve — de figyelj: minden körben tölts újra a kuldes.html-re,

különben a második kör beleakad az első maradványaiba (a küldés után az űrlap eltűnik).

Az eredmény ellenőrizhető az Elküldött lapjaim oldalon:

Elküldött lapjaim
Elküldött lapjaim
Elem Lokátor
Darabszámid="kuldott-szam"
Táblázatid="kuldott-tabla"
Egy sorclass="kuldott-sor", data-azonosito attribútummal

7. Bónusz: alert kezelése

Az Elküldött lapjaim oldalon a Törlés gomb valódi JavaScript confirm ablakot nyit.

Ezen gyakorolhatod a driver.switchTo().alert().accept() / .dismiss() használatát.

Ugyanez a süti-sáv „Részletek" gombjánál is.



A Journey értékelési pontjai — hol teljesíted őket

Journey-kritérium Hol / hogyan
1.1 Compiled classes és IDE-konfig Git-ből kizárva.gitignore — az oldaltól független
1.2 Selenium a pom.xml-bena projekted — az oldaltól független
2.1 A bot betölti az oldalt és belépbelepes.html → #email, #jelszo, #belep-gomb
2.2 A jelszó nem kerül be a Gitbea regisztrációnál választott saját jelszavad, külön fájlban / env-ben
3.1 A bot belép és elküld egy ingyenes lapotnem prémium lap → kuldes.html → #visszaigazolas
4.1 3–5 cím–üzenet pár fájlbana te adatfájlod (properties / CSV / JSON)
4.2 Mindenkinek a saját üzenetével megy a lapciklus + ellenőrzés az elkuldott.html tábláján

A kiírás megengedi a helyettesítést: *„You can use another eCard website if you want to or need to,

if you can find one that has a working eCard sending functionality."*

Egy előny a beadás szempontjából: a Hints figyelmeztet, hogy a valódi oldalakon **minden

próbálkozásnál kimegy egy lap** a címzetteknek, ezért kérj engedélyt tőlük. Itt semmilyen valódi

levél nem megy ki, szóval nyugodtan futtathatod annyiszor, ahányszor kell.


Buktatók, amikre számíts

Tünet Mi történik Mit csinálj
ElementNotInteractableExceptionRejtett mezőbe írnál a Tovább előttExplicit wait a láthatóságra
ElementClickInterceptedExceptionA süti-sáv vagy egy felugró ablak takarElőbb zárd be az overlay-t
A belépés „nem csinál semmit"Még fut az 1,5 mp-es késleltetésVárj az URL-váltásra vagy a hibaüzenetre
„Hibás e-mail vagy jelszó" jó jelszóvalA jelszó rövidebb 8 karakternél, vagy nincs benne számHasználj szabályos jelszót
Prémium lapnál felugró ablakPrémium lapot választottál[data-premium="false"] lapot válassz
A 2. kör elszáll a ciklusbanAz előző kör állapota megmaradtMinden körben navigálj újra a küldőoldalra

Beadás előtti ellenőrzőlista


Ha elakadsz

Előbb a DevTools (F12), utána a mentor. A legtöbb elakadás két dologból jön: vagy a lokátor nem az,

aminek hitted, vagy nem vártál eleget. Mindkettő láthatóvá válik, ha megnézed az elemet a

böngészőben, és összeveted azzal, amit a kódod keres.