Apache ANT -val Selenium: Teljes bemutató
Mi az Apache Ant?
Egy komplett szoftvertermék létrehozása során ügyelni kell a különböző harmadik féltől származó API-kra, azok osztályútvonalaira, a korábbi futtatható bináris fájlok tisztítására, a forráskódunk fordítására, a forráskód végrehajtására, a jelentések és a telepítési kódbázis létrehozására stb. Ha egyenként manuálisan hajtja végre, ez óriási időt vesz igénybe, és a folyamat hajlamos lesz a hibákra.
Itt jön egy olyan építőeszköz fontossága, mint az Ant. Az összes folyamatot tárolja, végrehajtja és automatizálja az Ant konfigurációs fájljában (általában build.xml) említett sorrendben.
Az Ant build előnyei
- Az Ant létrehozza az alkalmazás életciklusát, azaz megtisztítja, lefordítja, beállítja a függőséget, végrehajtja, jelent stb.
- A harmadik féltől származó API-függőséget az Ant állíthatja be, azaz a többi Jar fájl osztályútvonalát az Ant build fájl állítja be.
- Egy teljes alkalmazás jön létre a végpontok közötti szállításhoz és telepítéshez.
- Ez egy egyszerű összeállítási eszköz, ahol minden konfiguráció elvégezhető XML fájl használatával, és amely parancssorból is végrehajtható.
- Tisztává teszi a kódot, mivel a konfiguráció elkülönül a tényleges alkalmazáslogikától.
Hogyan telepítsük az Ant
Az Ant telepítésének lépései Windows az alábbiak
Step 1) Tovább https://ant.apache.org/bindownload.cgi Vagy Töltse le a .zip fájlt innen apache-ant-1.9.4-bin.zip
Step 2) Csomagolja ki a mappát, és menjen a kibontott mappa gyökeréhez, és másolja az elérési utat
Step 3) Menjen a Start -> Számítógép -> jobb gombbal ide, és válassza a "Tulajdonságok" lehetőséget, majd kattintson a Speciális rendszerbeállítások elemre.
Step 4) Megnyílik egy új ablak. Kattintson a „Környezeti változó…” gombra.
Step 5) Kattintson az „Új…” gombra, és állítsa be a változó nevét „ANT_HOME”-ra, a változó értékét pedig a kicsomagolt mappa gyökérútvonalaként, majd kattintson az OK gombra.
Step 6) most válassza ki a 'Path' változót a listából, majd kattintson a 'Szerkesztés' gombra, majd hozzáfűzi; %ANT_HOME%\bin.
Indítsa újra a rendszert egyszer, és készen áll az Ant build tool használatára.
Step 7) Az Ant verziójának ellenőrzéséhez a parancssor segítségével:
Hangya – változat
A Build.xml értelmezése
A Build.xml az Ant build eszköz legfontosabb összetevője. A Java projekt, minden tisztítással, beállítással, fordítással és telepítéssel kapcsolatos feladat szerepel ebben a fájlban XML formátumban. Amikor ezt az XML-fájlt parancssorral vagy bármely IDE-bővítmény segítségével futtatjuk, az ebbe a fájlba írt összes utasítás szekvenciálisan végrehajtásra kerül.
Ismerjük meg a kódot egy minta build.XML-ben
-
A Project címke a projekt nevének és a basicir attribútumának említésére szolgál. A baseir egy alkalmazás gyökérkönyvtára
<project name="YTMonetize" basedir=".">
- A tulajdonságcímkéket a build.XML fájl változójaként használja a további lépésekben
<property name="build.dir" value="${basedir}/build"/> <property name="external.jars" value=".\resources"/> <property name="ytoperation.dir" value="${external.jars}/YTOperation"/> <property name="src.dir"value="${basedir}/src"/>
- Target lépésként használt címkék, amelyek szekvenciális sorrendben fognak végrehajtani. A Name attribútum a cél neve. Egy build.xml-ben több cél is lehet
<target name="setClassPath">
- A path címke az összes olyan fájl logikai kötegelésére szolgál, amelyek a közös helyen vannak
<path id="classpath_jars">
- pathelement címke beállítja az elérési utat annak a közös helynek a gyökeréhez, ahol az összes fájlt tárolják
<pathelement path="${basedir}/"/>
- pathconvert címke, amely az elérési út címkén belüli összes közös fájl elérési útját a rendszer osztályútvonal-formátumává alakítja
<pathconvert pathsep=";" property="test.classpath" refid="classpath_jars"/>
- fileset címke, amelyet projektünkben a különböző harmadik féltől származó jar osztályútvonalának beállítására használnak
<fileset dir="${ytoperation.dir}" includes="*.jar"/>
- Az Echo tag szöveget nyomtat a konzolra
<echo message="deleting existing build directory"/>
- A címke törlése törli az adatokat az adott mappából
<delete dir="${build.dir}"/>
- Az mkdir címke új könyvtárat hoz létre
<mkdir dir="${build.dir}"/>
- javac címke a java forráskód fordítására és a .class fájlok új mappába helyezésére szolgál
<javac destdir="${build.dir}" srcdir="${src.dir}"> <classpath refid="classpath_jars"/> </javac>
- jar címke jar fájlt hoz létre .class fájlokból
<jar destfile="${ytoperation.dir}/YTOperation.jar" basedir="${build.dir}">
- manifest címke beállítja a fő osztályt a végrehajtásra
<manifest> <attribute name="Main-Class" value="test.Main"/> </manifest>
- 'depends' attribútum, amellyel egy cél egy másik céltól függ
<target name="run" depends="compile">
- A java tag a fő funkciót a fordítási cél részben létrehozott jarból hajtja végre
<java jar="${ytoperation.dir}/YTOperation.jar" fork="true"/>
Futtassa az Ant segítségével Eclipse csatlakoztat
Az Ant az eclipse alkalmazásból való futtatásához lépjen a build.xml fájlba -> kattintson jobb gombbal a fájlra -> Futtatás másként… -> kattintson a Fájl létrehozása elemre.
Példa
Vegyünk egy kis mintaprogramot, amely nagyon világosan elmagyarázza az Ant funkcióit. Projektünk felépítése így fog kinézni:
Ebben a példában 4 célunk van
- Állítsa be az osztály elérési útját a külső jarokhoz,
- Tisztítsa meg a korábban betartott kódot
- Fordítsa le a meglévő java kódot
- Futtassa a kódot
Guru99AntClass.class
package testAnt; import java.util.Date; public class Guru99AntClass { public static void main(String...s){ System.out.println("HELLO GURU99 ANT PROGRAM"); System.out.println("TODAY's DATE IS->"+ currentDate() ); } public static String currentDate(){ return new Date().toString(); } }
Build.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!--Project tag used to mention the project name, and basedir attribute will be the root directory of the application--> <project name="YTMonetize" basedir="."> <!--Property tags will be used as variables in build.xml file to use in further steps--> <property name="build.dir" value="${basedir}/build"/> <property name="external.jars" value=".\resources"/> <property name="ytoperation.dir" value="${external.jars}/YTOperation"/> <property name="src.dir"value="${basedir}/src"/> <!--Target tags used as steps that will execute in sequential order. name attribute will be the name of the target and < a name=OLE_LINK1 >'depends' attribute used to make one target to depend on another target --> <target name="setClassPath"> <path id="classpath_jars"> <pathelement path="${basedir}/"/> </path> <pathconvert pathsep=";"property="test.classpath" refid="classpath_jars"/> </target> <target name="clean"> <!--echo tag will use to print text on console--> <echo message="deleting existing build directory"/> <!--delete tag will clean data from given folder--> <delete dir="${build.dir}"/> </target> <target name="compile" depends="clean,setClassPath"> <echo message="classpath:${test.classpath}"/> <echo message="compiling.........."/> <!--mkdir tag will create new director--> <mkdir dir="${build.dir}"/> <echo message="classpath:${test.classpath}"/> <echo message="compiling.........."/> <!--javac tag used to compile java source code and move .class files to a new folder--> <javac destdir="${build.dir}" srcdir="${src.dir}"> <classpath refid="classpath_jars"/> </javac> <!--jar tag will create jar file from .class files--> <jar destfile="${ytoperation.dir}/YTOperation.jar"basedir="${build.dir}"> <!--manifest tag will set your main class for execution--> <manifest> <attribute name="Main-Class" value="testAnt.Guru99AntClass"/> </manifest> </jar> </target> <target name="run" depends="compile"> <!--java tag will execute main function from the jar created in compile target section--> <java jar="${ytoperation.dir}/YTOperation.jar"fork="true"/> </target> </project>
Hogyan kell végrehajtani TestNG kódot használva Ant
Itt fogunk létrehozni egy osztályt Testng metódusokat, és állítsa be az osztály elérési útját Tesztelés a build.xml-ben.
A testng metódus végrehajtásához létrehozunk egy másik testng.xml fájlt, és ezt a fájlt a build.xml fájlból hívjuk meg.
Step 1) Létrehozunk egy „Guru99AntClass.class” csomagban testAnt
Guru99AntClass.class
package testAnt; import java.util.Date; import org.testng.annotations.Test; public class Guru99AntClass { @Test public void Guru99AntTestNGMethod(){ System.out.println("HELLO GURU99 ANT PROGRAM"); System.out.println("TODAY's DATE IS->"+ currentDate() ); } public static String currentDate(){ return new Date().toString(); } }
2. lépés) Hozzon létre egy célt az osztály betöltéséhez a Build.xml-ben
<!-- Load testNG and add to the class path of application --> <target name="loadTestNG" depends="setClassPath"> <!—using taskdef tag we can add a task to run on the current project. In below line, we are adding testing task in this project. Using testing task here now we can run testing code using the ant script --> <taskdef resource="testngtasks" classpath="${test.classpath}"/> </target>
Step 3) Hozd létre a testng.xml fájlt
testng.xml
<?xml version="1.0"encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="YT"thread-count="1"> <test name="GURU99TestNGAnt"> <classes> <class name="testAnt.Guru99AntClass"> </class> </classes> </test> </suite>
Step 4) Teremt Target a Build.xml-ben ennek futtatásához TestNG kód
<target name="runGuru99TestNGAnt" depends="compile"> <!-- testng tag will be used to execute testng code using corresponding testng.xml file. Here classpath attribute is setting classpath for testng's jar to the project--> <testng classpath="${test.classpath};${build.dir}"> <!—xmlfileset tag is used here to run testng's code using testing.xml file. Using includes tag we are mentioning path to testing.xml file--> <xmlfileset dir="${basedir}" includes="testng.xml"/> </testng>
Step 5) A teljes Build.xml
<?xml version="1.0"encoding="UTF-8"standalone="no"?> <!--Project tag used to mention the project name, and basedir attribute will be the root directory of the application--> <project name="YTMonetize" basedir="."> <!--Property tags will be used as variables in build.xml file to use in further steps--> <property name="build.dir"value="${basedir}/build"/> <!-- put testng related jar in the resource folder --> <property name="external.jars" value=".\resource"/> <property name="src.dir" value="${basedir}/src"/> <!--Target tags used as steps that will execute in sequential order. name attribute will be the name of the target and 'depends' attribute used to make one target to depend on another target--> <!-- Load testNG and add to the class path of application --> <target name="loadTestNG"depends="setClassPath"> <taskdef resource="testngtasks"classpath="${test.classpath}"/> </target> <target name="setClassPath"> <path id="classpath_jars"> <pathelement path="${basedir}/"/> <fileset dir="${external.jars}" includes="*.jar"/> </path> <pathconvert pathsep=";"property="test.classpath"refid="classpath_jars"/> </target> <target name="clean"> <!--echo tag will use to print text on console--> <echo message="deleting existing build directory"/> <!--delete tag will clean data from given folder--> <delete dir="${build.dir}"/> </target> <target name="compile"depends="clean,setClassPath,loadTestNG"> <echo message="classpath:${test.classpath}"/> <echo message="compiling.........."/> <!--mkdir tag will create new director--> <mkdir dir="${build.dir}"/> <echo message="classpath:${test.classpath}"/> <echo message="compiling.........."/> <!--javac tag used to compile java source code and move .class files to a new folder--> <javac destdir="${build.dir}"srcdir="${src.dir}"> <classpath refid="classpath_jars"/> </javac> </target> <target name="runGuru99TestNGAnt"depends="compile"> <!-- testng tag will be used to execute testng code using corresponding testng.xml file --> <testng classpath="${test.classpath};${build.dir}"> <xmlfileset dir="${basedir}"includes="testng.xml"/> </testng> </target> </project>
Step 6) teljesítmény
Hangya vele Selenium Webdriver
Eddig azt tanultuk, hogy az ANT használatával az összes harmadik féltől származó jar-t elhelyezhetjük a rendszerben egy adott helyen, és beállíthatjuk az útvonalat a projektünk számára. Ezzel a módszerrel a projektünk összes függőségét egyetlen helyen állítjuk be, és megbízhatóbbá tesszük a fordításhoz, végrehajtáshoz és telepítéshez.
Hasonlóképpen, a szelént használó tesztelési projektjeink esetében könnyen megemlíthetjük a szelénfüggőséget a build.xml-ben, és nem kell manuálisan hozzáadnunk egy osztályútvonalat az alkalmazásunkhoz.
Így most figyelmen kívül hagyhatja a projekt osztályútvonalainak beállításának alább említett hagyományos módját.
Példa:
Módosítjuk az előző példát
Step 1) Állítsa be a selenium.jars tulajdonságot a szelénnel kapcsolatos jar értékre az erőforrás mappában
<property name="selenium.jars" value=".\selenium"/>
Step 2) Adja hozzá a szelénfájlokat a cél setClassPath-hez
<target name="setClassPath"> <path id="classpath_jars"> <pathelement path="${basedir}/"/> <fileset dir="${external.jars}" includes="*.jar"/> <!-- selenium jar added here --> <fileset dir="${selenium.jars}" includes="*.jar"/> </path>
Step 3) Teljes Build.xml:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!--Project tag used to mention the project name, and basedir attribute will be the root directory of the application--> <project name="YTMonetize" basedir="."> <!--Property tags will be used as variables in build.xml file to use in further steps--> <property name="build.dir" value="${basedir}/build"/> <!-- put testng related jar in the resource folder --> <property name="external.jars" value=".\resource"/> <!-- put selenium related jar in resource folder --> <property name="selenium.jars" value=".\selenium"/> <property name="src.dir" value="${basedir}/src"/> <!--Target tags used as steps that will execute in sequential order. name attribute will be the name of the target and 'depends' attribute used to make one target to depend on another target--> <!-- Load testNG and add to the class path of application --> <target name="loadTestNG" depends="setClassPath"> <taskdef resource="testngtasks" classpath="${test.classpath}"/> </target> <target name="setClassPath"> <path id="classpath_jars"> <pathelement path="${basedir}/"/> <fileset dir="${external.jars}" includes="*.jar"/> <!-- selenium jar added here --> <fileset dir="${selenium.jars}"includes="*.jar"/> </path> <pathconvert pathsep=";" property="test.classpath" refid="classpath_jars"/> </target> <target name="clean"> <!--echo tag will use to print text on console--> <echo message="deleting existing build directory"/> <!--delete tag will clean data from given folder--> <delete dir="${build.dir}"/> </target> <target name="compile" depends="clean,setClassPath,loadTestNG"> <echo message="classpath:${test.classpath}"/> <echo message="compiling.........."/> <!--mkdir tag will create new director--> <mkdir dir="${build.dir}"/> <echo message="classpath:${test.classpath}"/> <echo message="compiling.........."/> <!--javac tag used to compile java source code and move .class files to new folder--> <javac destdir="${build.dir}"srcdir="${src.dir}"> <classpath refid="classpath_jars"/> </javac> </target> <target name="runGuru99TestNGAnt" depends="compile"> <!-- testng tag will be used to execute testng code using corresponding testng.xml file --> <testng classpath="${test.classpath};${build.dir}"> <xmlfileset dir="${basedir}" includes="testng.xml"/> </testng> </target> </project>
Step 4) Most módosítsa a korábban létrehozott Guru99AntClass.java osztályt új kóddal.
Ebben a példában a lépéseinket használjuk Selenium vannak:
- Tovább https://demo.guru99.com/test/guru99home/
- Olvassa el az összes kurzus linkjét egyenként
- Nyomtassa ki az összes kurzus hiperhivatkozását a konzolon.
Guru99AntClass.java:
package testAnt; import java.util.List; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import org.testng.annotations.Test; public class Guru99AntClass { @Test public void Guru99AntTestNGMethod(){ WebDriver driver = new FirefoxDriver(); driver.get("https://demo.guru99.com/test/guru99home/"); List<WebElement> listAllCourseLinks = driver.findElements(By.xpath("//div[@class='canvas-middle']//a")); for(WebElement webElement : listAllCourseLinks) { System.out.println(webElement.getAttribute("href")); } } }
Step 5) A sikeres végrehajtás után a kimenet így fog kinézni:
Összegzésként
Az Ant egy építőeszköz Java.
A kódfordításhoz, telepítéshez, végrehajtási folyamathoz használt hangya.
Ant letölthető innen Apache weboldal.
Build.xml fájl, amely a végrehajtási célok Ant segítségével történő konfigurálására szolgál.
Az Ant futtatható parancssorból vagy megfelelő IDE-bővítményből, például az eclipse-ből.