Apache ANT kanssa Selenium: Täydellinen opetusohjelma
Mikä on Apache Ant?
Täydellistä ohjelmistotuotetta luotaessa on huolehdittava erilaisista kolmannen osapuolen API:ista, niiden luokkapolusta, aiempien suoritettavien binääritiedostojen puhdistamisesta, lähdekoodimme kääntämisestä, lähdekoodin suorittamisesta, raporttien ja käyttöönottokoodikannan luomisesta jne. Jos nämä tehtävät ovat tehdä yksitellen manuaalisesti, se vie valtavasti aikaa ja prosessi on altis virheille.
Tässä tulee esiin Anten kaltaisen rakennustyökalun merkitys. Se tallentaa, suorittaa ja automatisoi kaikki prosessit Ant:n asetustiedostossa (yleensä build.xml) mainitussa järjestyksessä.
Ant-rakennuksen etu
- Ant luo sovelluksen elinkaaren eli puhdistaa, kääntää, asettaa riippuvuuden, suorittaa, raportoi jne.
- Kolmannen osapuolen API-riippuvuuden voi asettaa Ant eli muun Jar-tiedoston luokkapolun määrittää Ant-koontitiedosto.
- Täydellinen sovellus luodaan päästä päähän -toimitusta ja käyttöönottoa varten.
- Se on yksinkertainen rakennustyökalu, jossa kaikki asetukset voidaan tehdä XML-tiedostolla ja joka voidaan suorittaa komentoriviltä.
- Se tekee koodistasi puhtaan, koska kokoonpano on erillinen todellisesta sovelluslogiikasta.
Kuinka asentaa Ant
Antin asentamisen vaiheet Windows on seuraava
Vaihe 1) Mene https://ant.apache.org/bindownload.cgi Tai Lataa .zip-tiedosto osoitteesta apache-ant-1.9.4-bin.zip
Vaihe 2) Pura kansio ja siirry ja kopioi polku puretun kansion juureen
Vaihe 3) Siirry kohtaan Käynnistä -> Tietokone -> napsauta hiiren kakkospainikkeella tätä ja valitse "Ominaisuudet" ja napsauta sitten Järjestelmän lisäasetukset
Vaihe 4) Uusi ikkuna avautuu. Napsauta "Ympäristömuuttuja…" -painiketta.
Vaihe 5) Napsauta New…-painiketta ja aseta muuttujan nimeksi ANT_HOME ja muuttujan arvo puretun kansion juuripoluksi ja napsauta OK.
Vaihe 6) valitse nyt luettelosta 'Path'-muuttuja ja napsauta 'Muokkaa' ja liitä; %ANT_HOME%\bin.
Käynnistä järjestelmä uudelleen kerran ja olet valmis käyttämään Ant build -työkalua nyt.
Vaihe 7) Ant-version tarkistaminen komentorivin avulla:
Ant – versio
Build.xml:n ymmärtäminen
Build.xml on Ant-rakennustyökalun tärkein osa. a Java projekti, kaikki puhdistukseen, asennukseen, käännökseen ja käyttöönottoon liittyvät tehtävät mainitaan tässä tiedostossa XML-muodossa. Kun suoritamme tämän XML-tiedoston komentorivillä tai millä tahansa IDE-laajennuksella, kaikki tähän tiedostoon kirjoitetut ohjeet suoritetaan peräkkäin.
Ymmärretään esimerkki build.XML:n koodista
-
Projektitunnistetta käytetään mainitsemaan projektin nimi ja baseir-attribuutti. Basedir on sovelluksen juurihakemisto
<project name="YTMonetize" basedir=".">
- Ominaisuustunnisteita käytetään muuttujina build.XML-tiedostossa, jota käytetään jatkossa
<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 tagit, joita käytetään vaiheina, jotka suoritetaan peräkkäisessä järjestyksessä. Name-attribuutti on kohteen nimi. Yhdessä build.xml-tiedostossa voi olla useita kohteita
<target name="setClassPath">
- polkutunnistetta käytetään niputtamaan kaikki tiedostot loogisesti, jotka ovat yhteisessä paikassa
<path id="classpath_jars">
- pathelement-tunniste asettaa polun yhteisen sijainnin juureen, johon kaikki tiedostot on tallennettu
<pathelement path="${basedir}/"/>
- pathconvert-tunnistetta käytetään muuntamaan kaikkien polkutunnisteen sisällä olevien yleisten tiedostojen polut järjestelmän luokkapolkumuotoon
<pathconvert pathsep=";" property="test.classpath" refid="classpath_jars"/>
- fileset-tagi, jota käytetään luokkapolun asettamiseen eri kolmannen osapuolen jarille projektissamme
<fileset dir="${ytoperation.dir}" includes="*.jar"/>
- Kaikutunnistetta käytetään tekstin tulostamiseen konsoliin
<echo message="deleting existing build directory"/>
- Poista tagi puhdistaa tiedot annetusta kansiosta
<delete dir="${build.dir}"/>
- mkdir-tunniste luo uuden hakemiston
<mkdir dir="${build.dir}"/>
- javac-tunniste, jota käytetään Java-lähdekoodin kääntämiseen ja .class-tiedostojen siirtämiseen uuteen kansioon
<javac destdir="${build.dir}" srcdir="${src.dir}"> <classpath refid="classpath_jars"/> </javac>
- jar-tunniste luo jar-tiedoston .class-tiedostoista
<jar destfile="${ytoperation.dir}/YTOperation.jar" basedir="${build.dir}">
- manifest-tunniste asettaa pääluokkasi suoritusta varten
<manifest> <attribute name="Main-Class" value="test.Main"/> </manifest>
- 'depends'-attribuutti, jota käytetään saamaan yksi kohde riippuvaiseksi toisesta kohteesta
<target name="run" depends="compile">
- java-tunniste suorittaa päätoiminnon käännöskohdeosiossa luodusta jarista
<java jar="${ytoperation.dir}/YTOperation.jar" fork="true"/>
Suorita Ant käyttämällä Eclipse kytkeä
Suorita Ant from eclipse siirtymällä build.xml-tiedostoon -> napsauta tiedostoa hiiren kakkospainikkeella -> Suorita nimellä… -> napsauta Build file
esimerkki
Otamme pienen näyteohjelman, joka selittää Ant-toiminnallisuuden erittäin selkeästi. Projektirakenteemme näyttää tältä -
Tässä esimerkissä meillä on 4 kohdetta
- Aseta luokkapolku ulkoisille purkeille,
- Puhdista aiemmin noudatettu koodi
- Kääntää olemassa olevaa Java-koodia
- Suorita koodi
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>
Kuinka Suorittaa TestNG koodi Ant
Täällä luomme luokan Testng menetelmät ja aseta luokkapolku Testaus tiedostossa build.xml.
Nyt testausmenetelmän suorittamiseksi luomme toisen testng.xml-tiedoston ja kutsumme tätä tiedostoa build.xml-tiedostosta.
Vaihe 1) Luomme “Guru99AntClass.class” paketissa 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(); } }
Vaihe 2) Luo kohde tämän luokan lataamiseksi Build.xml:ssä
<!-- 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>
Vaihe 3) Luo testng.xml
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>
Vaihe 4) luoda Target Build.xml:ssä suorittaaksesi tämän TestNG koodi
<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>
Vaihe 5) Täydellinen 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>
Vaihe 6) ulostulo
Muurahainen kanssa Selenium Web-ohjain
Tähän mennessä olemme oppineet, että ANT:n avulla voimme sijoittaa kaikki kolmannen osapuolen purkit tiettyyn paikkaan järjestelmässä ja määrittää niiden polun projektiimme. Tällä menetelmällä asetamme kaikki projektimme riippuvuudet yhteen paikkaan ja teemme siitä luotettavamman kokoamista, suorittamista ja käyttöönottoa varten.
Vastaavasti seleeniä käyttävissä testausprojekteissamme voimme helposti mainita seleeniriippuvuuden build.xml:ssä, eikä meidän tarvitse lisätä sen luokkapolkua manuaalisesti sovellukseemme.
Joten nyt voit jättää huomioimatta alla mainitun perinteisen tavan asettaa luokkapolut projektille.
Esimerkiksi:
Aiomme muokata edellistä esimerkkiä
Vaihe 1) Aseta ominaisuus seleen.jars arvoksi seleeniin liittyvä jar resurssikansiossa
<property name="selenium.jars" value=".\selenium"/>
Vaihe 2) Lisää seleenitiedostot kohde-setClassPathiin
<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>
Vaihe 3) Täydellinen 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>
Vaihe 4) Vaihda nyt aiemmin luotu luokka Guru99AntClass.java uudella koodilla.
Tässä tässä esimerkissä vaiheemme käyttämällä Selenium ovat:
- Mene
http://demo.guru99.com/test/guru99home/
- Lue kaikki kurssilinkit yksitellen
- Tulosta kaikkien kurssien hyperlinkki konsolissa.
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("http://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")); } } }
Vaihe 5) Onnistuneen suorituksen jälkeen tulos näyttää tältä:
Lataa yllä oleva esimerkkitiedosto
Yhteenveto
Ant on rakennustyökalu Java.
Muurahainen, jota käytetään koodin kokoamiseen, käyttöönottoon ja suoritusprosessiin.
Ant voi ladata osoitteesta Apache -sivustolta.
Build.xml-tiedosto, jota käytetään suorituskohteiden määrittämiseen Ant.
Ant voidaan ajaa komentoriviltä tai sopivasta IDE-laajennuksesta, kuten eclipse.