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

 

原文地址:https://www.cnblogs.com/haibaowang/p/8403625.html