Apache ANT với Selenium

Apache Ant là gì?

Trong khi tạo ra một sản phẩm phần mềm hoàn chỉnh, người ta cần quan tâm đến API của bên thứ ba khác nhau, đường dẫn phân nhánh của họ, Clean các tệp nhị phân thực thi trước đó, biên dịch mã nguồn của chúng tôi, thực thi mã nguồn, tạo báo cáo và cơ sở mã triển khai, v.v. Nếu các tác vụ này được thực hiện xong từng cái một theo cách thủ công, sẽ mất rất nhiều thời gian và quá trình này sẽ dễ xảy ra lỗi.

Đây là tầm quan trọng của một công cụ xây dựng như Ant. Nó lưu trữ, thực thi và tự động hóa tất cả quy trình theo một thứ tự tuần tự được đề cập trong tệp cấu hình của Ant (thường là build.xml).

Lợi ích của việc xây dựng Ant

  1. Ant tạo ra vòng đời ứng dụng tức là clean, compile, set dependency, execute, report,vv
  2. Sự phụ thuộc API của bên thứ ba có thể được thiết lập bởi Ant tức là đường dẫn lớp của tệp Jar khác được thiết lập bởi tệp xây dựng Ant.
  3. Một ứng dụng hoàn chỉnh được tạo để phân phối và triển khai End to End.
  4. Nó là một công cụ xây dựng đơn giản, nơi tất cả các cấu hình có thể được thực hiện bằng cách sử dụng tệp XML và có thể được thực thi từ dòng lệnh.
  5. Nó làm cho mã của bạn sạch sẽ vì cấu hình tách biệt với logic ứng dụng thực tế.

Cách cài đặt Ant

Các bước cài đặt Ant trong Windows như sau

Bước 1) Đến https://ant.apache.org/bindownload.cgi Hoặc Tải .zip tập tin từ apache-ant-1.9.4-bin.zip

Bước 2) Giải nén thư mục và đi đến và sao chép đường dẫn đến thư mục gốc của thư mục đã giải nén

Bước 3) Đi tới Bắt đầu -> Máy tính -> nhấp chuột phải vào đây và chọn ‘Thuộc tính’ sau đó nhấp vào Cài đặt Hệ thống Nâng cao

Bước 4) Một cửa sổ mới mở ra. Nhấp vào nút ‘Biến Môi trường …’.

Bước 5) Nhấp vào nút ‘Mới…’ và đặt tên biến là ‘ANT_HOME’ và giá trị biến làm đường dẫn gốc đến thư mục được giải nén và nhấp vào OK.

Bước 6) bây giờ chọn biến ‘Đường dẫn’ từ danh sách và nhấp vào ‘Chỉnh sửa’ và nối thêm; % ANT_HOME% \ bin.

Khởi động lại hệ thống một lần và bạn đã sẵn sàng sử dụng công cụ Ant build ngay bây giờ.

Bước 7) Để kiểm tra phiên bản Ant của bạn bằng dòng lệnh:

Ant –version

Build.xml

Build.xml là thành phần quan trọng nhất của công cụ xây dựng Ant. Đối với một dự án Java , tất cả các tác vụ liên quan đến dọn dẹp, thiết lập, biên dịch và triển khai đều được đề cập trong tệp này ở định dạng XML. Khi chúng tôi thực thi tệp XML này bằng dòng lệnh hoặc bất kỳ plugin IDE nào, tất cả các hướng dẫn được ghi vào tệp này sẽ được thực thi theo cách tuần tự.

Hãy hiểu mã trong một bản build.XML mẫu

Thẻ dự án được sử dụng để đề cập đến tên dự án và thuộc tính basedir. Basedir là thư mục gốc của một ứng dụng
<project name=”YTMonetize” basedir=”.”>

  •  
  • Các thẻ thuộc tính được sử dụng làm biến trong tệp build.XML sẽ được sử dụng trong các bước tiếp theo

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

  • Các thẻ mục tiêu được sử dụng làm các bước sẽ thực thi theo thứ tự tuần tự. Thuộc tính Name là tên của mục tiêu. Bạn có thể có nhiều mục tiêu trong một build.xml duy nhất
    <target name = “setClassPath”>
  • thẻ đường dẫn được sử dụng để gói tất cả các tệp một cách hợp lý ở vị trí chung
    <path id = “classpath_jars”>
  • thẻ pathelement sẽ đặt đường dẫn đến thư mục gốc của vị trí chung nơi lưu trữ tất cả các tệp
    <pathelement path = “$ {basedir} /” />
  • thẻ pathconvert được sử dụng để chuyển đổi đường dẫn của tất cả các tệp chung bên trong thẻ đường dẫn sang định dạng classpath của hệ thống
    <pathconvert pathsep = “;” property = “test.classpath” refid = “classpath_jars” />
  • thẻ fileset được sử dụng để đặt classpath cho jar của bên thứ ba khác nhau trong dự án của chúng tôi
    <fileset dir = “$ {ytoperation.dir}” include = “*. jar” />
  • Thẻ Echo được sử dụng để in văn bản trên bảng điều khiển

<echo message=”deleting existing build directory”/>

  • Xóa thẻ sẽ xóa dữ liệu khỏi thư mục nhất định

<delete dir = “$ {build.dir}” />           

  • thẻ mkdir sẽ tạo một thư mục mới

<mkdir dir = “$ {build.dir}” />

  • thẻ javac được sử dụng để biên dịch mã nguồn java và di chuyển các tệp .class sang một thư mục mới

       <javac destdir = “$ {build.dir}” srcdir = “$ {src.dir}”> 

<classpath refid = “classpath_jars” /> 

</javac>

  • thẻ jar sẽ tạo tệp jar từ các tệp .class

<jar destfile = “$ {ytoperation.dir} /YTOperation.jar” basedir = “$ {build.dir}”>

  • thẻ kê khai sẽ đặt lớp chính của bạn để thực thi

<manifest> 

<property name = “Main-Class” value = “test.Main” /> 

</manifest>

  • thuộc tính ‘phụ thuộc’ được sử dụng để làm cho một mục tiêu phụ thuộc vào một mục tiêu khác

<target name = “run” depend = “compile”>

  • thẻ java sẽ thực thi chức năng chính từ jar được tạo trong phần đích biên dịch

<java jar = “$ {ytoperation.dir} /YTOperation.jar” fork = “true” />

Chạy Ant bằng plugin Eclipse

Để chạy Ant từ eclipse, hãy truy cập tệp build.xml file -> right click on file -> Run as… -> click Build file

Thí dụ:

Chúng tôi sẽ lấy một chương trình mẫu nhỏ sẽ giải thích chức năng của Ant rất rõ ràng. Cấu trúc dự án của chúng tôi sẽ giống như –

Ở đây trong ví dụ này, chúng ta có 4 mục tiêu

  1. Đặt đường dẫn lớp cho các lọ bên ngoài,
  2. Clean mã đã tuân thủ trước đó
  3. Biên dịch mã java hiện có
  4. Chạy mã

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

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();   

}

}

Cách thực thi mã TestNG bằng Ant

Ở đây chúng ta sẽ tạo một lớp với các phương thức Testng và thiết lập đường dẫn lớp cho Kiểm thử trong build.xml.

Bây giờ để thực thi phương thức testng, chúng ta sẽ tạo một tệp testng.xml khác và gọi tệp này từ tệp build.xml.

Bước 1) Chúng tôi tạo một ” Guru99AntClass.class” trong gói 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();

}

}

Bước 2) Tạo mục tiêu để tải lớp này trong 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>

Bước 3) Tạo 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>

Bước 4) Tạo Target trong Build.xml để chạy mã TestNG này

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

Bước 5) Build.xml hoàn chỉnh

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

Bước 6) Đầu ra

Tải xuống tệp ở trên

Selenium Webdriver:

Cho đến nay, chúng tôi đã học được rằng sử dụng ANT, chúng tôi có thể đặt tất cả các lọ của bên thứ ba vào một vị trí cụ thể trong hệ thống và thiết lập đường dẫn của chúng cho dự án của chúng tôi. Sử dụng phương pháp này, chúng tôi đang đặt tất cả các phụ thuộc của dự án ở một nơi duy nhất và làm cho nó trở nên đáng tin cậy hơn để biên dịch, thực thi và triển khai.

Tương tự, đối với các dự án thử nghiệm của chúng tôi sử dụng selen, chúng tôi có thể dễ dàng đề cập đến sự phụ thuộc của selen trong build.xml và chúng tôi không cần thêm đường dẫn lớp của nó theo cách thủ công trong ứng dụng của mình.

Vì vậy, bây giờ bạn có thể bỏ qua cách truyền thống được đề cập dưới đây để đặt classpaths cho dự án.

Thí dụ:

Chúng tôi sẽ sửa đổi ví dụ trước

Bước 1) Đặt thuộc tính selenium.jars thành jar liên quan đến selen trong thư mục tài nguyên

<property name = “selenium.jars” value = “. \ selenium” />

Bước 2) Trong setClassPath đích, thêm các tệp selen

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

Bước 3) Hoàn thành 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>

Bước 4) Bây giờ thay đổi lớp Guru99AntClass.java đã tạo trước đó bằng mã mới.

Trong ví dụ này, các bước sử dụng Selenium của chúng ta là:

  1. Tới http://demo.guru99.com/test/guru99home/
  2. Đọc tất cả các liên kết khóa học từng cái một
  3. In siêu liên kết tất cả các khóa học trên bảng điều khiển.

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”));

         }

}

}

Bước 5) Sau khi thực thi thành công, kết quả đầu ra sẽ như sau:

Tải xuống tệp ví dụ trên

Bản tóm tắt:

Ant là một công cụ xây dựng cho Java.

Ant được sử dụng cho quá trình biên dịch, triển khai, thực thi mã.

Ant có thể được tải xuống từ trang web Apache .

Tệp Build.xml được sử dụng để định cấu hình các mục tiêu thực thi bằng Ant.

Ant có thể được chạy từ dòng lệnh hoặc plugin IDE phù hợp như eclipse.

Back to top button