Apache ANT koos Selenium: täielik õpetus

Mis on Apache Ant?

Täieliku tarkvaratoote loomisel tuleb hoolitseda erinevate kolmanda osapoole API, nende klassitee, eelmiste käivitatavate binaarfailide puhastamise, meie lähtekoodi kompileerimise, lähtekoodi täitmise, aruannete ja juurutuskoodibaasi loomise jne eest. Kui need ülesanded on käsitsi ükshaaval tehes võtab see tohutult aega ja protsessis esineb vigu.

Siin tuleb esile sellise ehitustööriista nagu Ant tähtsus. See salvestab, käivitab ja automatiseerib kõik protsessid Ant konfiguratsioonifailis (tavaliselt build.xml) mainitud järjestikuses järjekorras.

Apache Ant

Sipelga ehituse eelised

  1. Ant loob rakenduse elutsükli, st puhastab, kompileerib, määrab sõltuvuse, käivitab, teatab jne.
  2. Kolmanda osapoole API-sõltuvuse saab määrata Ant, st muu Jar-faili klassitee määrab Ant ehitusfail.
  3. Lõpust lõpuni tarnimiseks ja juurutamiseks luuakse täielik rakendus.
  4. See on lihtne ehitustööriist, kus kõiki konfiguratsioone saab teha XML-faili abil ja mida saab käivitada käsurealt.
  5. See muudab teie koodi puhtaks, kuna konfiguratsioon on tegelikust rakenduseloogikast eraldiseisev.

Kuidas paigaldada Ant

Ant installimise sammud Windows on järgmine

Step 1) Minna https://ant.apache.org/bindownload.cgi Või laadige alla ZIP-fail aadressilt apache-ant-1.9.4-bin.zip

Installige Ant

Step 2) Pakkige kaust lahti ja minge lahti pakkitud kausta juure ja kopeerige tee

Installige Ant

Step 3) Avage Start -> Arvuti -> paremklõpsake siin ja valige "Atribuudid", seejärel klõpsake nuppu Täpsemad süsteemisätted

Installige Ant

Step 4) Avaneb uus aken. Klõpsake nuppu "Keskkonnamuutuja…".

Installige Ant

Step 5) Klõpsake nuppu "Uus…" ja määrake muutuja nimeks "ANT_HOME" ja muutuja väärtuseks lahtipakkitud kausta juurteeks ning klõpsake nuppu OK.

Installige Ant

Step 6) vali nüüd loendist muutuja 'Path' ja kliki 'Muuda' ja lisa; %ANT_HOME%\bin.

Installige Ant

Taaskäivitage süsteem üks kord ja olete kohe valmis kasutama Ant build tööriista.

Step 7) Oma Ant versiooni kontrollimiseks käsurea abil tehke järgmist.

Ant – versioon

Installige Ant

Build.xml mõistmine

Build.xml on Ant ehitustööriista kõige olulisem komponent. a Java projekti puhul on kõik puhastamise, seadistamise, kompileerimise ja juurutamisega seotud ülesanded mainitud selles failis XML-vormingus. Kui käivitame selle XML-faili käsurea või IDE pistikprogrammi abil, täidetakse kõik sellesse faili kirjutatud juhised järjestikku.

Mõistame koodi build.XML-i näidises

  • Projekti märgendit kasutatakse projekti nime ja atribuudi basicir mainimiseks. Baseir on rakenduse juurkataloog
    <project name="YTMonetize" basedir=".">
  • Atribuudimärgendeid kasutatakse muutujatena failis build.XML, mida kasutatakse edasistes etappides
<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 sildid, mida kasutatakse sammudena, mis käivitatakse järjestikuses järjekorras. Atribuut Name on sihtmärgi nimi. Ühes build.xml-s võib olla mitu sihtmärki
    <target name="setClassPath">
  • tee silti kasutatakse kõigi ühises asukohas olevate failide loogiliseks koondamiseks
    <path id="classpath_jars">
  • teeelemendi silt määrab tee ühise asukoha juureni, kuhu kõik failid salvestatakse
    <pathelement path="${basedir}/"/>
  • pathconvert silt, mida kasutatakse kõigi teesildis olevate levinud failide teede teisendamiseks süsteemi klassitee vormingusse
    <pathconvert pathsep=";" property="test.classpath" refid="classpath_jars"/>
  • failikomplekti märgendit, mida kasutatakse meie projekti erinevate kolmanda osapoole jari klassitee määramiseks
    <fileset dir="${ytoperation.dir}" includes="*.jar"/>
  • Kajasilti kasutatakse teksti printimiseks konsoolile
<echo message="deleting existing build directory"/>
  • Sildi kustutamine puhastab andmed antud kaustast
<delete dir="${build.dir}"/>
  • mkdir silt loob uue kataloogi
	<mkdir dir="${build.dir}"/>
  • javac silt, mida kasutatakse Java lähtekoodi koostamiseks ja .class failide uude kausta teisaldamiseks
        <javac destdir="${build.dir}" srcdir="${src.dir}">
	<classpath refid="classpath_jars"/>
</javac>
  • jar silt loob klassifailidest jar-faili
	<jar destfile="${ytoperation.dir}/YTOperation.jar" basedir="${build.dir}">
  • manifesti silt määrab teie põhiklassi täitmiseks
<manifest>
		<attribute name="Main-Class" value="test.Main"/>
</manifest>
  • atribuut 'depends', mida kasutatakse ühe sihtmärgi muutmiseks teisest sihtmärgist sõltuvaks
<target name="run" depends="compile">
  • java silt täidab põhifunktsiooni kompileerimise sihtmärgi jaotises loodud jarist
<java jar="${ytoperation.dir}/YTOperation.jar" fork="true"/>

Käivita Ant kasutades Eclipse plugin

Ant'i käivitamiseks eclipse'ist avage fail build.xml -> paremklõpsake failil -> Run as… -> klõpsake käsul Ehita fail

Käivita Ant kasutades Eclipse Sisse panema

Näide

Võtame väikese näidisprogrammi, mis selgitab Ant funktsionaalsust väga selgelt. Meie projekti struktuur näeb välja selline -

Käivita Ant kasutades Eclipse Sisse panema

Selles näites on meil 4 sihtmärki

  1. Määrake väliste purkide jaoks klassitee,
  2. Puhastage varem järgitud kood
  3. Kompileerige olemasolev Java kood
  4. Käivitage kood

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>				

Käivita Ant kasutades Eclipse plugin

Kuidas teostada TestNG koodi kasutades Ant

Täitma TestNG koodi kasutades Ant

Siin loome klassi koos Testng meetodid ja määrake jaoks klassitee Testimine faili build.xml.

Nüüd loome testng meetodi käivitamiseks teise faili testng.xml ja kutsume selle faili build.xml failist.

Step 1) Loome a “Guru99AntClass.class” pakendis 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. samm) Looge sihtmärk selle klassi laadimiseks faili Build.xml

<!-- 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) Loo 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>

Step 4) Looma Target failis Build.xml selle käivitamiseks TestNG kood

<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) Täielik 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) Väljund

Täitma TestNG koodi kasutades Ant

Laadige alla ülaltoodud fail

Sipelgas koos Selenium Veebidraiver

Siiani oleme õppinud, et ANT abil saame kõik kolmanda osapoole purgid süsteemis kindlasse kohta paigutada ja määrata nende tee meie projekti jaoks. Seda meetodit kasutades seame kõik oma projekti sõltuvused ühte kohta ja muudame selle kompileerimise, täitmise ja juurutamise jaoks usaldusväärsemaks.

Samamoodi saame seleeni kasutavate testimisprojektide puhul hõlpsasti mainida seleenisõltuvust failis build.xml ja me ei pea oma rakenduses selle klassi teed käsitsi lisama.

Nüüd saate ignoreerida allpool nimetatud traditsioonilist viisi projekti klassiteede määramiseks.

Sipelgas koos Selenium Veebidraiver

Näide:

Muudame eelmist näidet

Step 1) Määrake ressursikaustas atribuudi seleen.jars väärtuseks seleeniga seotud purk

		<property name="selenium.jars" value=".\selenium"/>

Step 2) Lisage sihtrühma setClassPath seleenifailid

<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) Täitke 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) Nüüd muuda varem loodud klass Guru99AntClass.java uue koodiga.

Siin selles näites meie sammud kasutades Selenium See on:

  1. Minna https://demo.guru99.com/test/guru99home/
  2. Lugege kõiki kursuste linke ükshaaval
  3. Kõigi kursuste hüperlingi printimine konsoolil.

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) Pärast edukat täitmist näeb väljund välja järgmine:

Sipelgas koos Selenium Veebidraiver

Laadige alla ülaltoodud näitefail

kokkuvõte

Ant on ehitustööriist Java.

Sipelgas, mida kasutatakse koodi koostamiseks, juurutamiseks ja täitmisprotsessiks.

Ant saab alla laadida aadressilt Apache kodulehel.

Fail Build.xml, mida kasutatakse Ant-ga täitmise sihtmärkide konfigureerimiseks.

Ant saab käivitada käsurealt või sobivalt IDE pistikprogrammilt nagu eclipse.

Võta see postitus kokku järgmiselt: