Apache ANT με Selenium: Ολοκληρωμένο σεμινάριο

Τι είναι το Apache Ant;

Κατά τη δημιουργία ενός πλήρους προϊόντος λογισμικού, κάποιος πρέπει να φροντίσει το διαφορετικό API τρίτων κατασκευαστών, τη διαδρομή της τάξης τους, τον καθαρισμό προηγούμενων εκτελέσιμων δυαδικών αρχείων, τη μεταγλώττιση του πηγαίου κώδικα, την εκτέλεση του πηγαίου κώδικα, τη δημιουργία αναφορών και τη βάση κώδικα ανάπτυξης κ.λπ. Εάν αυτές οι εργασίες είναι γίνεται ένα προς ένα χειροκίνητα, θα χρειαστεί τεράστιος χρόνος και η διαδικασία θα είναι επιρρεπής σε σφάλματα.

Εδώ έρχεται η σημασία ενός εργαλείου κατασκευής όπως το Ant. Αποθηκεύει, εκτελεί και αυτοματοποιεί όλες τις διαδικασίες με διαδοχική σειρά που αναφέρεται στο αρχείο διαμόρφωσης του Ant (συνήθως build.xml).

Απάτσι Αντ

Οφέλη από την κατασκευή του μυρμηγκιού

  1. Το Ant δημιουργεί τον κύκλο ζωής της εφαρμογής, δηλαδή καθαρισμό, μεταγλώττιση, ρύθμιση εξάρτησης, εκτέλεση, αναφορά κ.λπ.
  2. Η εξάρτηση API τρίτου μέρους μπορεί να οριστεί από το Ant, δηλαδή η διαδρομή κλάσης άλλων αρχείων Jar ορίζεται από το αρχείο κατασκευής Ant.
  3. Δημιουργείται μια πλήρης εφαρμογή για παράδοση και ανάπτυξη από άκρο σε άκρο.
  4. Είναι ένα απλό εργαλείο κατασκευής όπου όλες οι διαμορφώσεις μπορούν να γίνουν χρησιμοποιώντας αρχείο XML και το οποίο μπορεί να εκτελεστεί από τη γραμμή εντολών.
  5. Καθιστά τον κώδικά σας καθαρό καθώς η διαμόρφωση είναι ξεχωριστή από την πραγματική λογική της εφαρμογής.

Πώς να εγκαταστήσετε το Ant

Βήματα για την εγκατάσταση του Ant Windows είναι όπως ακολουθεί

Βήμα 1) Πηγαίνετε στο https://ant.apache.org/bindownload.cgi Ή Λήψη αρχείου .zip από apache-ant-1.9.4-bin.zip

Εγκαταστήστε το Ant

Βήμα 2) Αποσυμπιέστε το φάκελο και μεταβείτε και αντιγράψτε τη διαδρομή στη ρίζα του αποσυμπιεσμένου φακέλου

Εγκαταστήστε το Ant

Βήμα 3) Μεταβείτε στην Έναρξη -> Υπολογιστής -> κάντε δεξί κλικ εδώ και επιλέξτε "Ιδιότητες" και στη συνέχεια κάντε κλικ στις Ρυθμίσεις συστήματος για προχωρημένους

Εγκαταστήστε το Ant

Βήμα 4) Ανοίγει ένα νέο παράθυρο. Κάντε κλικ στο κουμπί «Μεταβλητή περιβάλλοντος…».

Εγκαταστήστε το Ant

Βήμα 5) Κάντε κλικ στο κουμπί «Νέο…» και ορίστε το όνομα της μεταβλητής ως «ANT_HOME» και την τιμή της μεταβλητής ως τη ριζική διαδρομή προς τον αποσυμπιεσμένο φάκελο και κάντε κλικ στο OK.

Εγκαταστήστε το Ant

Βήμα 6) τώρα επιλέξτε τη μεταβλητή «Διαδρομή» από τη λίστα και κάντε κλικ στην «Επεξεργασία» και προσάρτηση. %ANT_HOME%\bin.

Εγκαταστήστε το Ant

Κάντε επανεκκίνηση του συστήματος μία φορά και είστε έτοιμοι να χρησιμοποιήσετε το εργαλείο κατασκευής Ant τώρα.

Βήμα 7) Για να ελέγξετε την έκδοση του Ant χρησιμοποιώντας τη γραμμή εντολών:

Ant – έκδοση

Εγκαταστήστε το Ant

Κατανόηση του Build.xml

Το Build.xml είναι το πιο σημαντικό στοιχείο του εργαλείου κατασκευής Ant. Για ένα Java έργο, όλες οι εργασίες που σχετίζονται με τον καθαρισμό, τη ρύθμιση, τη μεταγλώττιση και την ανάπτυξη αναφέρονται σε αυτό το αρχείο σε μορφή XML. Όταν εκτελούμε αυτό το αρχείο XML χρησιμοποιώντας γραμμή εντολών ή οποιοδήποτε πρόσθετο IDE, όλες οι οδηγίες που είναι γραμμένες σε αυτό το αρχείο θα εκτελούνται με διαδοχικό τρόπο.

Ας κατανοήσουμε τον κώδικα σε ένα δείγμα build.XML

  • Η ετικέτα έργου χρησιμοποιείται για να αναφέρει ένα όνομα έργου και ένα χαρακτηριστικό basedir. Το basedir είναι ο ριζικός κατάλογος μιας εφαρμογής
    <project name="YTMonetize" basedir=".">
  • Οι ετικέτες ιδιοτήτων χρησιμοποιούνται ως μεταβλητές στο αρχείο build.XML για χρήση σε περαιτέρω βήματα
<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"/>
  • Οι ετικέτες στόχου που χρησιμοποιούνται ως βήματα που θα εκτελεστούν με διαδοχική σειρά. Το χαρακτηριστικό Name είναι το όνομα του στόχου. Μπορείτε να έχετε πολλούς στόχους σε ένα build.xml
    <target name="setClassPath">
  • Η ετικέτα διαδρομής χρησιμοποιείται για τη ομαδοποίηση όλων των αρχείων που βρίσκονται στην κοινή θέση
    <path id="classpath_jars">
  • Η ετικέτα pathelement θα ορίσει τη διαδρομή προς τη ρίζα της κοινής θέσης όπου αποθηκεύονται όλα τα αρχεία
    <pathelement path="${basedir}/"/>
  • ετικέτα pathconvert που χρησιμοποιείται για τη μετατροπή των διαδρομών όλων των κοινών αρχείων μέσα στην ετικέτα διαδρομής στη μορφή classpath του συστήματος
    <pathconvert pathsep=";" property="test.classpath" refid="classpath_jars"/>
  • Η ετικέτα του συνόλου αρχείων χρησιμοποιείται για τον ορισμό της διαδρομής τάξης για διαφορετικό βάζο τρίτων στο έργο μας
    <fileset dir="${ytoperation.dir}" includes="*.jar"/>
  • Η ετικέτα Echo χρησιμοποιείται για την εκτύπωση κειμένου στην κονσόλα
<echo message="deleting existing build directory"/>
  • Η διαγραφή ετικέτας θα καθαρίσει τα δεδομένα από τον συγκεκριμένο φάκελο
<delete dir="${build.dir}"/>
  • Η ετικέτα mkdir θα δημιουργήσει έναν νέο κατάλογο
	<mkdir dir="${build.dir}"/>
  • ετικέτα javac που χρησιμοποιείται για τη μεταγλώττιση του πηγαίου κώδικα java και τη μετακίνηση αρχείων .class σε νέο φάκελο
        <javac destdir="${build.dir}" srcdir="${src.dir}">
	<classpath refid="classpath_jars"/>
</javac>
  • Η ετικέτα jar θα δημιουργήσει αρχείο jar από αρχεία .class
	<jar destfile="${ytoperation.dir}/YTOperation.jar" basedir="${build.dir}">
  • Η ετικέτα manifest θα ορίσει την κύρια κλάση σας για εκτέλεση
<manifest>
		<attribute name="Main-Class" value="test.Main"/>
</manifest>
  • Το χαρακτηριστικό 'εξαρτάται' χρησιμοποιείται για να κάνει έναν στόχο να εξαρτάται από έναν άλλο στόχο
<target name="run" depends="compile">
  • Η ετικέτα java θα εκτελέσει την κύρια λειτουργία από το βάζο που δημιουργήθηκε στην ενότητα στόχου μεταγλώττισης
<java jar="${ytoperation.dir}/YTOperation.jar" fork="true"/>

Εκτελέστε το Ant χρησιμοποιώντας Eclipse συνδέω

Για να τρέξει ο Αντ eclipse μεταβείτε στο αρχείο build.xml -> δεξί κλικ στο αρχείο -> Εκτέλεση ως… -> κάντε κλικ στην επιλογή Δημιουργία αρχείου

Εκτελέστε το Ant χρησιμοποιώντας Eclipse Συνδέω

Παράδειγμα

Θα πάρουμε ένα μικρό δείγμα προγράμματος που θα εξηγεί τη λειτουργικότητα του Ant πολύ καθαρά. Η δομή του έργου μας θα μοιάζει με -

Εκτελέστε το Ant χρησιμοποιώντας Eclipse Συνδέω

Εδώ σε αυτό το παράδειγμα έχουμε 4 στόχους

  1. Ορισμός διαδρομής τάξης για εξωτερικά βάζα,
  2. Καθαρίστε τον κώδικα που συμμορφώθηκε προηγουμένως
  3. Μεταγλώττιση υπάρχοντος κώδικα java
  4. Εκτελέστε τον κωδικό

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>				

Εκτελέστε το Ant χρησιμοποιώντας Eclipse συνδέω

Πώς να εκτελέσετε TestNG κώδικας χρησιμοποιώντας Αντ

Εκτέλεση TestNG κώδικας χρησιμοποιώντας Αντ

Εδώ θα δημιουργήσουμε μια τάξη με Testng μεθόδους και ορίστε τη διαδρομή κλάσης για Δοκιμές στο build.xml.

Τώρα για εκτέλεση testng μέθοδο θα δημιουργήσουμε άλλη testng.xml και καλέστε αυτό το αρχείο από το αρχείο build.xml.

Βήμα 1) Δημιουργούμε ένα “Guru99AntClass.class” σε συσκευασία δοκιμαζόμενος

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) Δημιουργήστε έναν στόχο για να φορτώσετε αυτήν την κλάση στο 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>

Βήμα 3) Δημιουργία 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>

Βήμα 4) Δημιουργήστε Target στο Build.xml για να το εκτελέσετε TestNG κωδικός

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

Βήμα 5) Το πλήρες 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>

Βήμα 6) Παραγωγή

Εκτέλεση TestNG κώδικας χρησιμοποιώντας Αντ

Κατεβάστε το παραπάνω Αρχείο

Μυρμήγκι με Selenium Πρόγραμμα οδήγησης Web

Μέχρι στιγμής, μάθαμε ότι χρησιμοποιώντας το ANT μπορούμε να τοποθετήσουμε όλα τα βάζα τρίτων σε μια συγκεκριμένη θέση στο σύστημα και να ορίσουμε την πορεία τους για το έργο μας. Χρησιμοποιώντας αυτήν τη μέθοδο, ρυθμίζουμε όλες τις εξαρτήσεις του έργου μας σε ένα μόνο μέρος και το κάνουμε πιο αξιόπιστο για τη μεταγλώττιση, την εκτέλεση και την ανάπτυξη.

Ομοίως, για τα έργα δοκιμών μας χρησιμοποιώντας selenium, μπορούμε εύκολα να αναφέρουμε selenium εξάρτηση στο build.xml και δεν χρειάζεται να προσθέσουμε μια διαδρομή κλάσης με μη αυτόματο τρόπο στην εφαρμογή μας.

Έτσι, τώρα μπορείτε να αγνοήσετε τον παρακάτω παραδοσιακό τρόπο ορισμού μαθημάτων για έργο.

Μυρμήγκι με Selenium Πρόγραμμα οδήγησης Web

Παράδειγμα:

Θα τροποποιήσουμε το προηγούμενο παράδειγμα

Βήμα 1) Ορίστε την ιδιοκτησία selenium.βάζα να selenium σχετικό βάζο στο φάκελο πόρων

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

Βήμα 2) Στο στόχο setClassPath, προσθέστε το selenium αρχεία

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

Βήμα 3) Ολοκληρώστε το 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>

Βήμα 4) Τώρα αλλάξτε την κλάση Guru99AntClass.java που δημιουργήθηκε προηγουμένως με νέο κώδικα.

Εδώ σε αυτό το παράδειγμα τα βήματά μας χρησιμοποιώντας Selenium είναι:

  1. Πηγαίνετε στο http://demo.guru99.com/test/guru99home/
  2. Διαβάστε όλους τους συνδέσμους των μαθημάτων έναν προς έναν
  3. Εκτύπωση υπερ-σύνδεσης όλων των μαθημάτων στην κονσόλα.

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"));
      	  }
		}
}		

Βήμα 5) Μετά την επιτυχή εκτέλεση, η έξοδος θα μοιάζει με αυτό:

Μυρμήγκι με Selenium Πρόγραμμα οδήγησης Web

Κατεβάστε το παραπάνω Παράδειγμα αρχείου

Χαρακτηριστικά

Το Ant είναι ένα εργαλείο κατασκευής για Java.

Μυρμήγκι που χρησιμοποιείται για τη μεταγλώττιση κώδικα, την ανάπτυξη, τη διαδικασία εκτέλεσης.

Το Ant μπορεί να γίνει λήψη από Apache ιστοσελίδα.

Το αρχείο Build.xml χρησιμοποιείται για τη διαμόρφωση στόχων εκτέλεσης χρησιμοποιώντας το Ant.

Το Ant μπορεί να εκτελεστεί από τη γραμμή εντολών ή από κατάλληλο πρόσθετο IDE eclipse.