Szelén

Bevezetés a szelénbe a Python 3-ban

Bevezetés a szelénbe a Python 3-ban
A szelén a webalkalmazások tesztelésére használt keretrendszer. A szelén automatizál egy böngészőt, például a Chrome vagy a Firefox, hogy teszteket futtasson a kívánt webhelyen. A szelén szintén nagyon hatékony web-kaparó eszköz. A Selenium támogatja a JavaScript-et és az összes modern böngészőfunkciót. Ez az eszköz nagyon hatékonyan vonja le az információkat a webhelyekről.

Ez a cikk bemutatja, hogyan állíthatja be a Selenium Linux disztribúcióján (i.e., Ubuntu), valamint az alapvető web-automatizálás és webes selejtezés végrehajtásának módja a Selenium Python 3 könyvtárral.

Előfeltételek

A cikkben használt parancsok és példák kipróbálásához a következőkre van szükség:

1) Linux disztribúció (lehetőleg Ubuntu) telepítve a számítógépére.
2) A Python 3 telepítve van a számítógépére.
3) A PIP 3 telepítve van a számítógépére.
4) A számítógépre telepített Google Chrome vagy Firefox böngésző.

Számos cikk található ezekről a témákról a LinuxHint oldalon.com. Feltétlenül nézze meg ezeket a cikkeket, ha további segítségre van szüksége.

A Python 3 virtuális környezet előkészítése a projekthez

A Python virtuális környezet egy elszigetelt Python projektkönyvtár létrehozására szolgál. A PIP használatával telepített Python modulokat csak a projektkönyvtárba telepítik, nem pedig globálisan.

A Python virtualenv modul a Python virtuális környezetek kezelésére szolgál.

Telepítheti a Python-t virtualenv modul globálisan a PIP 3 használatával, az alábbiak szerint:

$ sudo pip3 telepítse a virtualenv-t

A PIP3 letölti és globálisan telepíti az összes szükséges modult.

Ezen a ponton a Python virtualenv modult globálisan kell telepíteni.

Hozza létre a projekt könyvtárat python-selenium-basic / a jelenlegi munkakönyvtárban az alábbiak szerint:

$ mkdir -pv python-selenium-basic / meghajtók

Navigáljon az újonnan létrehozott projektkönyvtárhoz python-selenium-basic /, alábbiak szerint:

$ cd python-selenium-basic /

Hozzon létre egy Python virtuális környezetet a projektkönyvtárában a következő paranccsal:

$ virtualenv .env

A Python virtuális környezetet most létre kell hoznia a projekt könyvtárában."

Aktiválja a Python virtuális környezetet a projektkönyvtárban a következő paranccsal:

$ forrás .env / bin / activ

Amint láthatja, a Python virtuális környezet aktiválva van ehhez a projektkönyvtárhoz.

A Selenium Python könyvtár telepítése

A Selenium Python könyvtár a hivatalos Python PyPI adattárban érhető el.

Ezt a könyvtárat a PIP 3 segítségével telepítheti az alábbiak szerint:

$ pip3 telepítse a szelént

A Selenium Python könyvtárat most telepíteni kell.

Most, hogy a Selenium Python könyvtár telepítve van, a következő dolog, amit meg kell tennie: telepítenie kell egy webes illesztőprogramot a kedvenc webböngészőjéhez. Ebben a cikkben megmutatom, hogyan kell telepíteni a Selenium Firefox és Chrome webes illesztőprogramjait.

A Firefox Gecko illesztőprogram telepítése

A Firefox Gecko illesztőprogram lehetővé teszi a Firefox böngésző vezérlését vagy automatizálását a Selenium használatával.

A Firefox Gecko illesztőprogram letöltéséhez látogasson el a mozilla / geckodriver GitHub kiadási oldalára egy webböngészőből.

Mint láthatja, v0.26.A 0 a Firefox Gecko illesztőprogram legújabb verziója a cikk írásakor.

A Firefox Gecko illesztőprogram letöltéséhez görgessen kissé lefelé, és kattintson a Linux geckodriver tar-ra.gz archívum, az operációs rendszer architektúrájától függően.

Ha 32 bites operációs rendszert használ, kattintson a gombra geckodriver-v0.26.0-linux32.kátrány.gz link.

Ha 64 bites operációs rendszert használ, kattintson a gombra geckodriver-v0.26.0-linuxx64.kátrány.gz link.

Esetemben letöltöm a Firefox Gecko illesztőprogram 64 bites verzióját.

Böngészője kéri, hogy mentse az archívumot. Válassza a lehetőséget Fájl mentése majd kattintson rendben.

A Firefox Gecko illesztőprogram archívumát a ~ / Letöltések Könyvtár.

Kivonat a geckodriver-v0.26.0-linux64.kátrány.gz archívum a ~ / Letöltések könyvtárba a járművezetők / a következő könyvtár beírásával:

$ tar -xzf ~ / Letöltések / geckodriver-v0.26.0-linux64.kátrány.gz -C illesztőprogramok /

Miután kibontotta a Firefox Gecko Driver archívumát, új geckodriver bináris fájlt kell létrehozni a járművezetők / a projekt könyvtárát, amint az az alábbi képernyőképen látható.

A Selenium Firefox Gecko illesztőprogram tesztelése

Ebben a részben bemutatom, hogyan állíthatja be az első Selenium Python parancsfájlt annak tesztelésére, hogy a Firefox Gecko illesztőprogram működik-e.

Először nyissa meg a projekt könyvtárat python-selenium-basic / kedvenc IDE-jével vagy szerkesztőjével. Ebben a cikkben a Visual Studio kódot fogom használni.

Hozza létre az új Python szkriptet ex01.py, és írja be a következő sorokat a szkriptbe.

a szelénimport-meghajtóról
szelénből.web meghajtó.gyakori.kulcsok importálása kulcsok
az időből importál
böngésző = webdriver.Firefox (végrehajtható_útvonal = "./ drivers / geckodriver ")
böngésző.get ('http: // www.Google.com ')
alvás (5)
böngésző.Kilépés()

Ha elkészült, mentse a ex01.py Python szkript.

A kódot a cikk egy későbbi szakaszában ismertetem.

A következő sor úgy konfigurálja a Seleniumot, hogy a Firefox Gecko illesztőprogramot használja a járművezetők / a projekt könyvtárát.

Futtassa a következőket annak teszteléséhez, hogy a Firefox Gecko illesztőprogram működik-e a Seleniummal ex01.py Python szkript:

$ python3 ex01.py

A Firefox böngészőnek automatikusan meg kell látogatnia a Google-t.com és 5 másodperc múlva bezárkózik. Ha ez bekövetkezik, akkor a Selenium Firefox Gecko illesztőprogram megfelelően működik.

A Chrome Internetes illesztőprogram telepítése

A Chrome Web Driver lehetővé teszi a Google Chrome böngésző vezérlését vagy automatizálását a Selenium használatával.

Töltse le a Chrome webillesztő programjának ugyanazt a verzióját, mint a Google Chrome böngészője.

A Google Chrome böngésző verziószámának megkereséséhez keresse fel a chrome: // settings / help oldalt a Google Chrome böngészőben. A verziószámnak a A Chrome-ról szakaszban látható, ahogy az alábbi képernyőképen is láthatja.

Esetemben a verziószám az 83.0.4103.116. A verziószám első három része (83.0.4103, az én esetemben) meg kell egyeznie a Chrome Web Driver verziószámának első három részével.

A Chrome webillesztő letöltéséhez látogasson el a Chrome illesztőprogram hivatalos letöltési oldalára.

Ban,-ben Jelenlegi kiadások szakaszban elérhető lesz a Google Web Driver a Google Chrome böngésző legfrissebb kiadásaihoz, amint az az alábbi képernyőképen látható.

Ha a Google Chrome által használt verziója nincs a Jelenlegi kiadások részben görgessen egy kicsit lefelé, és megtalálja a kívánt verziót.

Miután rákattintott a megfelelő Chrome webillesztő-verzióra, az a következő oldalra vezet. Kattintson a chromedriver_linux64.postai irányítószám link, ahogy az az alábbi képernyőképen szerepel.

Most le kell töltenie a Chrome Web Driver archívumot.

A Chrome Web Driver archívumát most le kell töltenie a ~ / Letöltések Könyvtár.

Kivonhatja a chromedriver-linux64.postai irányítószám archívum a ~ / Letöltések könyvtárba a járművezetők / a projekt könyvtárát a következő paranccsal:

$ unzip ~ / Letöltések / chromedriver_linux64.zip -d illesztőprogramok /

Miután kibontotta a Chrome Web Driver archívumát, új chromedriver bináris fájlt kell létrehozni a járművezetők / a projekt könyvtárát, amint az az alábbi képernyőképen látható.

A Selenium Chrome internetes illesztőprogram tesztelése

Ebben a részben bemutatom, hogyan állíthatja be az első Selenium Python szkriptet annak tesztelésére, hogy a Chrome webillesztőprogram működik-e.

Először hozza létre az új Python szkriptet ex02.py, és írja be a következő kódsorokat a szkriptbe.

a szelénimport-meghajtóról
szelénből.web meghajtó.gyakori.kulcsok importálása kulcsok
az időből importál
böngésző = webdriver.Chrome (végrehajtható_útvonal = "./ driverek / chromedriver ")
böngésző.get ('http: // www.Google.com ')
alvás (5)
böngésző.Kilépés()

Ha elkészült, mentse a ex02.py Python szkript.

A kódot a cikk egy későbbi szakaszában ismertetem.

A következő sor úgy konfigurálja a Seleniumot, hogy használja a Chrome webillesztő programot járművezetők / a projekt könyvtárát.

Futtassa a ex02.py Python szkript, az alábbiak szerint:

$ python3 ex01.py

A Google Chrome böngészőnek automatikusan meg kell látogatnia a Google-t.com és 5 másodperc múlva bezárkózik. Ha ez bekövetkezik, akkor a Selenium Firefox Gecko illesztőprogram megfelelően működik.

A szelén web-kaparásának alapjai

Mostantól a Firefox böngészőt fogom használni. Használhatja a Chrome-ot is, ha szeretné.

Az alap Selenium Python szkriptnek úgy kell kinéznie, mint az alábbi képernyőképen látható szkript.

Először importálja a szelént web meghajtó tól szelén modul.

Ezután importálja a Kulcsok tól től szelén.web meghajtó.gyakori.kulcsok. Ez segít elküldeni a billentyűzet gombnyomásait a Seleniumból automatizált böngészőbe.

A következő sor létrehozza a böngésző objektum a Firefox böngészőhöz a Firefox Gecko illesztőprogram (Webdriver) használatával. Ezzel az objektummal vezérelheti a Firefox böngésző műveleteit.

Webhely vagy URL betöltése (feltöltöm a webhelyet: https: // www.kacsa.com), hívja a kap() módszere böngésző objektumot a Firefox böngészőben.

A Selenium segítségével megírhatja tesztjeit, elvégezheti az internetes selejtezést, végül pedig bezárhatja a böngészőt a Kilépés() módszere böngésző tárgy.

A fenti a Selenium Python szkript alapelrendezése. Ezeket a sorokat az összes Selenium Python szkriptjébe írja.

1. példa: Weboldal címének kinyomtatása

Ez lesz a legegyszerűbb példa, amelyet a szelén alkalmazásával tárgyaltunk. Ebben a példában kinyomtatjuk a meglátogatni kívánt weboldal címét.

Hozza létre az új fájlt ex04.py és írja be a következő kódsorokat.

a szelénimport-meghajtóról
szelénből.web meghajtó.gyakori.kulcsok importálása kulcsok
böngésző = webdriver.Firefox (végrehajtható_útvonal = "./ drivers / geckodriver ")
böngésző.get ('https: // www.kacsa.com ')
print ("Cím:% s"% böngésző.cím)
böngésző.Kilépés()

Ha végzett, mentse a fájlt.

Itt a böngésző.cím a meglátogatott weboldal címének és a nyomtatás() függvény segítségével a cím kinyomtatható a konzolon.

Miután a ex04.py szkript, akkor:

1) Nyissa meg a Firefoxot
2) Töltse be a kívánt weboldalt
3) Hívja le az oldal címét
4) Nyomtassa ki a címet a konzolra
5) És végül zárja be a böngészőt

Mint láthatja, a ex04.py A script szépen kinyomtatta a weboldal címét a konzolon.

$ python3 ex04.py

2. példa: Több weboldal címének kinyomtatása

Az előző példához hasonlóan ugyanazt a módszert használhatja több weboldal címének kinyomtatására a Python hurok segítségével.

Ennek megértéséhez hozza létre az új Python szkriptet ex05.py és írja be a következő kódsorokat a parancsfájlba:

a szelénimport-meghajtóról
szelénből.web meghajtó.gyakori.kulcsok importálása kulcsok
böngésző = webdriver.Firefox (végrehajtható_útvonal = "./ drivers / geckodriver ")
URL = ['https: // www.kacsa.com ',' https: // linuxhint.com ',' https: // yahoo.com ']
az URL-hez az URL-ben:
böngésző.get (url)
print ("Cím:% s"% böngésző.cím)
böngésző.Kilépés()

Ha elkészült, mentse a Python szkriptet ex05.py.

Itt a URL-ek list tartalmazza az egyes weboldalak URL-jét.

A mert ciklust használjuk a URL-ek listaelemeket.

A szelén minden iterációnál azt mondja a böngészőnek, hogy látogassa meg a url és megkapja a weboldal címét. Miután a Selenium kinyerte a weboldal címét, a konzol kinyomtatja.

Futtassa a Python szkriptet ex05.py, és látnia kell az egyes weboldalak címét a URL-ek lista.

$ python3 ex05.py

Ez egy példa arra, hogy a Selenium hogyan végezheti el ugyanazt a feladatot több weboldallal vagy webhellyel.

3. példa: Adatok kinyerése egy weboldalról

Ebben a példában bemutatom az alapokat az adatok weboldalakról történő kivonására a Selenium használatával. Ez más néven webes kaparás.

Először keresse fel a Randomot.org link a Firefoxból. Az oldalnak véletlenszerű karakterláncot kell generálnia, amint az az alábbi képernyőképen látható.

A véletlen karakterlánc-adatok Selenium segítségével történő kinyeréséhez ismernie kell az adatok HTML-ábrázolását is.

Annak megtekintéséhez, hogy a véletlenszerű karakterlánc-adatok hogyan jelennek meg a HTML-ben, válassza ki a véletlenszerű karakterlánc-adatokat, nyomja meg az egér jobb gombját (RMB), majd kattintson a Ellenőrizze az elemet (Q), ahogy az az alábbi képernyőképen szerepel.

Az adatok HTML reprezentációját meg kell jeleníteni a Ellenőr fülre, amint az az alábbi képernyőképen látható.

Kattintson a gombra is Ellenőrzés ikon ( ) hogy ellenőrizze az oldalról származó adatokat.

Kattintson az ellenőrzés ikonra (), és vigye az egérmutatót a kivonni kívánt véletlenszerű karakterlánc-adatok fölé. Az adatok HTML-ábrázolását a korábbiak szerint kell megjeleníteni.

Mint látható, a véletlenszerű karakterláncadatok HTML-be vannak csomagolva elő tag, és tartalmazza az osztályt adat.

Most, hogy ismerjük a kinyerni kívánt adatok HTML reprezentációját, létrehozunk egy Python szkriptet, amely az adatokat a Selenium használatával vonja ki.

Hozza létre az új Python szkriptet ex06.py és írja be a következő kódsorokat a szkriptbe

a szelénimport-meghajtóról
szelénből.web meghajtó.gyakori.kulcsok importálása kulcsok
böngésző = webdriver.Firefox (végrehajtható_útvonal = "./ drivers / geckodriver ")
böngésző.get ("https: // www.véletlen.org / húrok /?num = 1 & len = 20 & számjegy
= on & upperalpha = on & loweralpha = on & unique = on & format = html & rnd = new ")
dataElement = böngésző.find_element_by_css_selector ('előtag.adat')
nyomtatás (dataElement.szöveg)
böngésző.Kilépés()

Ha elkészült, mentse a ex06.py Python szkript.

Itt a böngésző.kap() metódus betölti a weboldalt a Firefox böngészőbe.

A böngésző.find_element_by_css_selector () metódus az oldal HTML-kódjában keres egy adott elemet, és visszaadja azt.

Ebben az esetben az elem az lenne elő.adat, a elő címke, amelynek az osztály neve van adat.

Valami alatt elő.adat elemet a dataElement változó.

Ezután a szkript kinyomtatja a kijelölt szöveges tartalmát elő.adat elem.

Ha futtatja a ex06.py Python szkript, ki kell vonnia a véletlenszerű karakterláncadatokat a weboldalról, amint az az alábbi képernyőképen látható.

$ python3 ex06.py

Mint láthatja, minden egyes alkalommal, amikor lefuttatom a ex06.py Python szkript, más véletlenszerű karakterlánc-adatokat von ki a weboldalról.

4. példa: Adatok listájának kinyerése a weboldalról

Az előző példa bemutatta, hogyan lehet egyetlen adatelemet kinyerni egy weboldalról a Selenium segítségével. Ebben a példában megmutatom, hogyan lehet a Selenium segítségével kinyerni az adatok listáját egy weboldalról.

Először keresse fel a véletlenszerű név-generátort.információkat a Firefox böngészőjéből. Ez a webhely tíz véletlenszerű nevet generál minden alkalommal, amikor újratölti az oldalt, amint az az alábbi képernyőképen látható. Célunk, hogy ezeket a véletlenszerű neveket szelén segítségével nyerjük ki.

Ha jobban megvizsgálja a névlistát, láthatja, hogy ez egy rendezett lista (ol címke). A ol tag tartalmazza az osztály nevét is névlista. A véletlenszerű nevek mindegyike listaelemként jelenik meg (li tag) a ol címke.

E véletlen nevek kibontásához hozza létre az új Python szkriptet ex07.py és írja be a következő kódsorokat a szkriptbe.

a szelénimport-meghajtóról
szelénből.web meghajtó.gyakori.kulcsok importálása kulcsok
böngésző = webdriver.Firefox (végrehajtható_útvonal = "./ drivers / geckodriver ")
böngésző.get ("http: // random-name-generator.info / ")
nameList = böngésző.find_elements_by_css_selector ('ol.nameList li ')
a névhez a névlistában:
nyomtatott név.szöveg)
böngésző.Kilépés()

Ha elkészült, mentse a ex07.py Python szkript.

Itt a böngésző.kap() metódus betölti a véletlenszerű névgenerátor weboldalát a Firefox böngészőbe.

A böngésző.find_elements_by_css_selector () metódus a CSS választót használja ol.névLista li hogy megtalálja mindet li elemek a ol az osztály nevét tartalmazó címke névlista. Az összes kijelöltet tároltam li elemei a névlista változó.

A mert ciklust használjuk a névlista listája li elemek. Minden iterációban a li elem a konzolra van nyomtatva.

Ha futtatja a ex07.py Python szkript, az összes véletlenszerű nevet lekéri a weboldalról, és kinyomtatja a képernyőn, ahogy az alábbi képernyőképen láthatja.

$ python3 ex07.py

Ha másodszor futtatja a szkriptet, akkor a véletlenszerű felhasználói nevek új listáját adja vissza, amint az az alábbi képernyőképen látható.

5. példa: Űrlap beküldése - Keresés a DuckDuckGo-n

Ez a példa ugyanolyan egyszerű, mint az első példa. Ebben a példában meglátogatom a DuckDuckGo keresőmotort, és rákeresek a kifejezésre szelén hq szelén felhasználásával.

Először látogassa meg a DuckDuckGo keresőmotort a Firefox böngészőből.

Ha megvizsgálja a keresési beviteli mezőt, annak azonosítóval kell rendelkeznie search_form_input_homepage, ahogy az alábbi képernyőképen láthatja.

Most hozza létre az új Python szkriptet ex08.py és írja be a következő kódsorokat a szkriptbe.

a szelénimport-meghajtóról
szelénből.web meghajtó.gyakori.kulcsok importálása kulcsok
böngésző = webdriver.Firefox (végrehajtható_útvonal = "./ drivers / geckodriver ")
böngésző.get ("https: // duckduckgo.com / ")
searchInput = böngésző.find_element_by_id ('search_form_input_homepage')
searchInput.send_keys ('szelén hq' + Kulcsok.BELÉP)

Ha elkészült, mentse a ex08.py Python szkript.

Itt a böngésző.kap() A módszer a DuckDuckGo keresőmotorjának kezdőlapját tölti be a Firefox böngészőbe.

A böngésző.find_element_by_id () metódus kiválasztja a bemeneti elemet az azonosítóval search_form_input_homepage és tárolja a searchInput változó.

A searchInput.send_keys () metódust használnak a gombnyomásra vonatkozó adatok elküldésére a beviteli mezőbe. Ebben a példában elküldi a karakterláncot szelén hq, és megnyomja az Enter billentyűt a Kulcsok.BELÉP állandó.

Amint a DuckDuckGo kereső megkapja az Enter billentyűt, nyomja meg azKulcsok.BELÉP), megkeresi és megjeleníti az eredményt.

Futtassa a ex08.py Python szkript, az alábbiak szerint:

$ python3 ex08.py

Mint látható, a Firefox böngésző felkereste a DuckDuckGo keresőt.

Automatikusan beírta szelén hq a keresőmezőben.

Amint a böngésző megkapta az Enter billentyűt, nyomja meg aKulcsok.BELÉP), megjelenítette a keresési eredményt.

6. példa: Űrlap beküldése W3Schools-on.com

Az 5. példában a DuckDuckGo keresőmotor-űrlap benyújtása egyszerű volt. Csak annyit kellett tennie, hogy megnyomta az Enter billentyűt. De ez nem minden formanyomtatvány esetében lesz így. Ebben a példában összetettebb űrlapkezelést mutatok be.

Először keresse fel a W3Schools HTML Forms oldalát.com a Firefox böngészőből. Amint az oldal betöltődik, látnia kell egy példa űrlapot. Ezt az űrlapot nyújtjuk be ebben a példában.

Ha megvizsgálja az űrlapot, a Keresztnév a beviteli mezőnek meg kell adnia az azonosítót fname, a Vezetéknév a beviteli mezőnek meg kell adnia az azonosítót lname, és a Küldés gomb kell a típus Beküldés, ahogy az alábbi képernyőképen láthatja.

Az űrlap Selenium használatával történő elküldéséhez hozza létre az új Python parancsfájlt ex09.py és írja be a következő kódsorokat a szkriptbe.

a szelénimport-meghajtóról
szelénből.web meghajtó.gyakori.kulcsok importálása kulcsok
böngésző = webdriver.Firefox (végrehajtható_útvonal = "./ drivers / geckodriver ")
böngésző.get ("https: // www.w3iskolák.com / html / html_forms.áspiskígyó")
fname = böngésző.find_element_by_id ('fname')
fname.egyértelmű()
fname.send_keys ('sahriar')
lname = böngésző.find_element_by_id ('lname')
lname.egyértelmű()
lname.send_keys ('Shovon')
submitButton = böngésző.find_element_by_css_selector ('input [type = "submit"]')
submitButton.send_keys (Kulcsok.BELÉP)

Ha elkészült, mentse a ex09.py Python szkript.

Itt a böngésző.kap() módszer megnyitja a W3schools HTML űrlapok oldalt a Firefox böngészőben.

A böngésző.find_element_by_id () metódus az id alapján megkeresi a beviteli mezőket fname és lname és tárolja őket a fname és lname változók, ill.

A fname.egyértelmű() és lname.egyértelmű() módszerek törlik az alapértelmezett keresztnevet (John) fname érték és vezetéknév (Doe) lname érték a beviteli mezőkből.

A fname.send_keys () és lname.send_keys () módszerek típusa Sahriar és Shovon ban,-ben Keresztnév és Vezetéknév beviteli mezők, ill.

A böngésző.find_element_by_css_selector () módszer kiválasztja a Küldés gomb formában, és az submitButton változó.

A submitButton.send_keys () metódus elküldi az Enter billentyűt (Kulcsok.BELÉP) hoz Küldés gomb a forma. Ez a művelet benyújtja az űrlapot.

Futtassa a ex09.py Python szkript, az alábbiak szerint:

$ python3 ex09.py

Amint láthatja, az űrlapot automatikusan beküldték a megfelelő bemenetekkel.

Következtetés

Ez a cikk elősegíti a Selenium böngésző tesztelésének, a web-automatizálás és a webes selejtezési könyvtárak használatának megkezdését a Python 3-ban. További információkért tekintse meg a hivatalos Selenium Python dokumentációt.

SuperTuxKart Linuxhoz
A SuperTuxKart egy nagyszerű cím, amelynek célja, hogy ingyenesen hozza el a Mario Kart élményét Linux rendszerén. Elég kihívást jelentő és szórakozta...
Csata a Wesnoth bemutatóért
A Battle for Wesnoth az egyik legnépszerűbb nyílt forráskódú stratégiai játék, amelyet jelenleg játszhatsz. Ez a játék nem csak nagyon hosszú ideje fe...
0 A.D. Bemutató
A sok stratégiai játék közül 0 A.D. átfogó címként és nagyon mély, taktikus játékként képes kiemelkednie annak ellenére, hogy nyílt forráskódú. A játé...