selenium_maven高級實戰


Maven在自動化中可以幫助我們更好的管理我們的工程,今天就來仔細學習下它的用法;

1.一個重要的插件:Maven surefire-plugin

用Maven的這個插件的目的主要是為了:用Maven直接調用testng的xml文件實現測試腳本的運行;

1.1引用

引用Maven surefire-plugin的方法如下:打開pom文件,找到Effective POM;

使用此插件,需要復制:

      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.12.4</version>

到pom.xml文件,將其導入到pom.xml文件的時候,需要對其進行包裝,包裝后的引用如下:

<build>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
<configuration> 
<excludes>
<exclude>TestModule1/TestMavenSurefirePlugin.java</exclude>
<exclude>TestModule2/TestJavaInPom.java</exclude>
</excludes>
<sureXmlFiles>
<sureXmlFile>
${project.basedir}/src/test/java/TestModule1/TestMavenSurefirePlugin.xml
</sureXmlFile>
</sureXmlFiles>
</configuration>
</plugin>
</plugins>
</build>

 注意下:<excludes>標簽,當沒有此標簽的時候,maven執行測試用例的時候,執行的是所有測試用例,加上此標簽后,會將此標簽下的測試用例進行排除后,執行指定的測試用例。

1.2Maven執行測試用例的兩種方式

注意:maven-surefire-plugin必須與testng.jar同時導入到pom.xml文件中的時候才可以使用Maven來調試testng的測試用例;Maven執行測試用例有兩種方式。

1.使用cmd命令行。

cd到項目指定路徑下,執行mvn test即可。

2.執行pom.xml文件,右鍵->Run  as  maven test執行。

 1.3用Maven運行測試用例的好處

1.在一定程度上減少了必要步驟,尤其是命令行運行的方式,我們只需要有工程即可;

2.Maven運行的方式,會自動在target文件夾下生成測試報告。

 1.4使用Maven運行不包含testng XML文件的java文件

具體場景如下:

此時pom.xml文件配置如下:

<build>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
<configuration>
<includes>
<include> TestModule2/TestJavaInPom.java </include> </includes>
</configuration>
</plugin>
</plugins>
</build>

 運行此腳本還是可以通過cmd命令行和pom.xml文件兩種方式。請注意<includes>標簽里面可以有多個<include>。即可以運行多個測試類。

 1.5Maven設置多線程測試用例

實例:

import org.openqa.selenium.WebDriver;
import org.testng.annotations.Test;
import com.xinbao.utils.Browsers;
import com.xinbao.utils.BrowsersType;
public class TestMutipleThreads {
    private WebDriver driver;
    @Test
    public void visit360So() {
        Browsers browser = new Browsers(BrowsersType.chrome);
        driver = browser.driver;
        driver.get("https://www.so.com/");
        driver.quit();
    }
    @Test
    public void visitBKY() {
        Browsers browsers = new Browsers(BrowsersType.ie);
        driver = browsers.driver;
        driver.get("https://www.cnblogs.com/");
        driver.quit();
    }
}

上面的測試類中我們需要驗證兩個測試用例,一個是打開360搜索,一個是打開博客園,我們此時想同時啟用兩個線程來驗證測試用例,就需要在:pom.xml文件中設置如下:

<build>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
<configuration> 
<excludes>excludes標簽是排除的意思 
<exclude>TestModule3/TestMutipleThreads.java</exclude>
<exclude>TestModule2/TestJavaInPom.java</exclude>
</excludes>
<parallel>methods</parallel> <threadCount>3</threadCount>
<sureXmlFiles>
<sureXmlFile>
${project.basedir}/src/test/java/TestModule1/TestMavenSurefirePlugin.xml
</sureXmlFile>
</sureXmlFiles>
</configuration>
</plugin>
</plugins>
</build>

 即需要添加:<parallel>和<threadCount>兩個標簽,請注意:設置的threadCount的數量最好大於測試用例數量,這樣可以極大的提高運行效率。

1.6Maven遠程調試

應用場景:什么時候會用到遠程調試呢?我們知道我們開發代碼會在某個IDE里進行(我習慣用Eclipse),它里面有自帶的java編譯體系,maven里面也有區別與IDE的java編譯體系,當我們在IDE里正常編譯的腳本,用maven編譯確報錯的時候,我們就需要對其進行遠程調試。

 使用步驟如下:

1.在Eclipse里找到報錯的類,打上斷點;

2.登錄遠程機器;

3.在cmd命令行下,執行mvn -Dmaven.surefire.debug test命令即可在cmd命令行下顯示出報錯信息;

 需要注意的是:我們使用遠程調試的時候,需要在Pom.xml文件的build標簽下添加:<defaultGoal>compile</defaultGoal>

 2.Maven其他應用

 2.1Maven的使用范圍

maven的依賴jar是有范圍的,maven中用dependency scope來限制依賴范圍。主要記住以下兩種情形。

1.所引用的jar存在於maven倉庫中,這里不區分maven私庫、中央庫亦或是本地庫,只要所引用的jar在maven庫中,此時默認的<scope>的值就是compile。即如下形式:

 <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>compile</scope>
    </dependency>

2.當所引用的jar以外部引用的形式提供,此時maven不會去倉庫查找它,要想在pom.xml文件中引用這類jar的時候,此時<scope>的值為system,並且要配置其路徑,即增加systemPath標簽,需要如下進行:

  <dependency>
        <groupId>com.haibao</groupId>
        <artifactId>log4i</artifactId>
        <version>1.2.11</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/files/log4j-1.2.11.jar</systemPath>
    </dependency>

 2.2Maven項目引入同是Maven項目的依賴

想在Maven項目里引入同是Maven項目的依賴非常簡單,步驟如下:

1.工程->右鍵->Run  as ->Maven install,會將此Maven工程打成jar包,並且放置在本地Maven倉庫中。

出現上圖中提示,證明已經構建完成。

2.引用的時候,直接pom.xml文件右鍵,Add dependency,輸入關鍵字,會優先從本地倉庫中將此jar包查詢出來,直接引用即可。

2.3Maven繼承

當我們在一個Maven工程里需要的許多jar來自於另一個Maven工程,此時我們可以使用Maven繼承,繼承的方式如下:

假設我們現在有兩個工程,父Maven工程為:MavenPlugin,子Maven工程為MavenExtends,此時我們想要MavenExtends工程下的pom.xml文件集成自MavenPlugin工程下的pom.xml文件。步驟如下:

1.將MavenPlugin的pom.xml文件的Packing修改為pom。(一般情況下必須為jar);

2.配置MavenExtends工程的pom.xml;

 

3.配置完成,點擊保存即可。此時查看MavenExtends工程的pom.xml文件,增加<parent>頁簽(放在<project>頁簽中間),如下所示:

 <parent>
      <groupId>com.haibao</groupId>
      <artifactId>MavenPlugin</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <relativePath>../MavenPlugin/pom.xml</relativePath>
  </parent>

此時MavenExtends即可繼承工程MavenPlugin下的所有jar包;

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM