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.

Apache Ant

Az Ant build előnyei

  1. 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.
  2. 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.
  3. Egy teljes alkalmazás jön létre a végpontok közötti szállításhoz és telepítéshez.
  4. 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ó.
  5. 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

Telepítse az Ant

Step 2) Csomagolja ki a mappát, és menjen a kibontott mappa gyökeréhez, és másolja az elérési utat

Telepítse az Ant

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.

Telepítse az Ant

Step 4) Megnyílik egy új ablak. Kattintson a „Környezeti változó…” gombra.

Telepítse az Ant

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.

Telepítse az Ant

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.

Telepítse az Ant

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

Telepítse az Ant

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.

Futtassa az Ant segítségével Eclipse Csatlakoztat

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:

Futtassa az Ant segítségével Eclipse Csatlakoztat

Ebben a példában 4 célunk van

  1. Állítsa be az osztály elérési útját a külső jarokhoz,
  2. Tisztítsa meg a korábban betartott kódot
  3. Fordítsa le a meglévő java kódot
  4. 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>				

Futtassa az Ant segítségével Eclipse csatlakoztat

Hogyan kell végrehajtani TestNG kódot használva Ant

Végrehajt 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

Végrehajt TestNG kódot használva Ant

Töltse le a fenti fájlt

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.

Hangya vele Selenium Webdriver

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:

  1. Tovább https://demo.guru99.com/test/guru99home/
  2. Olvassa el az összes kurzus linkjét egyenként
  3. 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:

Hangya vele Selenium Webdriver

Töltse le a fenti példafájlt

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