Учебники

53) Использование Apache Ant с Selenium

What is Apache Ant?

При создании полного программного продукта необходимо позаботиться о различных сторонних API, их пути к классам, очистке предыдущих исполняемых двоичных файлов, компиляции нашего исходного кода, выполнении исходного кода, создании отчетов и базы кода развертывания и т. Д. Если эти задачи выполнены один за другим вручную, это займет огромное время, и процесс будет подвержен ошибкам.

Здесь приходит важность инструмента сборки, такого как Ant. Он хранит, выполняет и автоматизирует весь процесс в последовательном порядке, указанном в файле конфигурации Ant (обычно build.xml).

Apache ANT с Selenium: полное руководство

Преимущество Ant build

  1. Ant создает жизненный цикл приложения, т. Е. Очищает, компилирует, устанавливает зависимость, выполняет, сообщает и т. Д.
  2. Зависимость стороннего API может быть установлена ​​Ant, т.е. путь к классу другого Jar-файла задается Ant-файлом сборки.
  3. Полное приложение создано для сквозной доставки и развертывания.
  4. Это простой инструмент сборки, где все конфигурации могут быть выполнены с использованием файла XML и которые могут быть выполнены из командной строки.
  5. Это делает ваш код чистым, так как конфигурация отделена от реальной логики приложения.

Как установить Ant

Шаги для установки Ant в Windows заключается в следующем

Шаг 1) Перейдите по адресу http://ant.apache.org/bindownload.cgi. Загрузите файл .zip с веб-сайта apache-ant-1.9.4-bin.zip.

Apache ANT с Selenium: полное руководство

Шаг 2) Разархивируйте папку, перейдите и скопируйте путь в корень разархивированной папки.

Apache ANT с Selenium: полное руководство

Шаг 3) Перейдите в Пуск -> Компьютер -> щелкните правой кнопкой мыши здесь и выберите «Свойства», затем нажмите «Дополнительные параметры системы»

Apache ANT с Selenium: полное руководство

Шаг 4) Откроется новое окно. Нажмите кнопку «Переменная среды …».

Apache ANT с Selenium: полное руководство

Шаг 5) Нажмите кнопку «Создать…» и задайте имя переменной как «ANT_HOME» и значение переменной в качестве корневого пути к разархивированной папке и нажмите «ОК».

Apache ANT с Selenium: полное руководство

Шаг 6) теперь выберите переменную «Path» из списка, нажмите «Edit» и добавьте; % ANT_HOME% \ Bin.

Apache ANT с Selenium: полное руководство

Перезапустите систему один раз, и вы готовы использовать Ant build tool прямо сейчас.

Шаг 7) Чтобы проверить версию вашего Ant с помощью командной строки:

Муравей –версия

Apache ANT с Selenium: полное руководство

Понимание Build.xml

Build.xml является наиболее важным компонентом Ant build tool. Для проекта 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"/>
  • Целевые теги используются в качестве шагов, которые будут выполняться в последовательном порядке. Атрибут имени — это имя цели. Вы можете иметь несколько целей в одном build.xml
    	<target name="setClassPath">
  • тег path используется для логического связывания всех файлов, находящихся в общем месте
    		<path id="classpath_jars">
  • Тег pathelement установит путь к корню общей папки, где хранятся все файлы.
    		<pathelement path="${basedir}/"/>
  • тег pathconvert, используемый для преобразования путей всех общих файлов внутри тега path в формат системного пути
    <pathconvert pathsep=";" property="test.classpath" refid="classpath_jars"/>					
  • тег fileset, используемый для установки classpath для различных сторонних jar-файлов в нашем проекте
    <fileset dir="${ytoperation.dir}" includes="*.jar"/>
  • Эхо-тег используется для печати текста на консоли
<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-тег выполнит функцию main из jar-файла, созданного в целевой секции компиляции
	<java jar="${ytoperation.dir}/YTOperation.jar" fork="true"/>									

Запустите Ant с помощью плагина Eclipse

Чтобы запустить Ant из eclipse, перейдите в файл build.xml -> щелкните правой кнопкой мыши по файлу -> Run as… -> щелкните Build file

Apache ANT с Selenium: полное руководство

Пример:

Мы возьмем небольшой пример программы, которая очень четко объяснит функциональность Ant. Структура нашего проекта будет выглядеть так:

Apache ANT с Selenium: полное руководство

Здесь в этом примере у нас есть 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>				

Apache ANT с Selenium: полное руководство

Как выполнить код TestNG с помощью Ant

Apache ANT с Selenium: полное руководство

Здесь мы создадим класс с методами Testng и установим путь к классу для тестирования в build.xml.

Теперь, чтобы выполнить метод testng, мы создадим другой файл testng.xml и вызовем этот файл из файла build.xml.

Шаг 1) Создаем « Guru99AntClass.class» в пакете 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) Создайте цель для загрузки этого класса в 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) Создайте цель в 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) Вывод

Apache ANT с Selenium: полное руководство

Загрузите вышеуказанный файл

Муравей с Selenium Webdriver:

До сих пор мы узнали, что с помощью ANT мы можем поместить все сторонние jar-файлы в определенное место в системе и установить их путь для нашего проекта. Используя этот метод, мы устанавливаем все зависимости нашего проекта в одном месте и делаем его более надежным для компиляции, выполнения и развертывания.

Аналогично, для наших проектов тестирования, использующих селен, мы можем легко упомянуть зависимость от селена в build.xml, и нам не нужно добавлять путь к классам вручную в нашем приложении.

Так что теперь вы можете игнорировать упомянутый ниже традиционный способ установки путей к классам для проекта.

Apache ANT с Selenium: полное руководство

Пример:

Мы собираемся изменить предыдущий пример

Шаг 1) Установите для свойства selenium.jars значение jar, связанное с селеном, в папке ресурсов.

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

Шаг 2) В целевой setClassPath добавьте файлы селена

<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) После успешного выполнения вывод будет выглядеть так:

Apache ANT с Selenium: полное руководство

Загрузите файл примера выше

Резюме:

Ant — это инструмент для сборки Java.

Ant используется для компиляции кода, развертывания, выполнения процесса.

Ant можно скачать с сайта Apache .

Файл Build.xml, используемый для настройки целей выполнения с использованием Ant.

Ant можно запустить из командной строки или подходящего плагина IDE, например eclipse.