Selenium Maven教程
 
 
  Maven是最新的构建测试工具。与Ant相比,它具有一些新功能,例如依赖项等。
 
  Maven是项目构建或项目管理工具。每当多个测试工程师将他们的文件集成到同一框架中时,它都用于检查框架组件之间的编译问题。
 
 它始终维护监视器,框架组件或构建,并在任何时候提供构建状态修改。修改会在框架中进行。
 
 如果框架中没有编译问题,它将提供" 构建成功"消息,否则将提供" 构建失败"消息。 
 
  Maven具有依赖项之类的新功能,用于在测试执行之前从互联网上下载依赖项jar。
 
 借助Maven,我们可以在以下位置执行测试脚本: 没有日食的命令行。 
 
 有关Maven的更多信息,请参见以下链接: 
 
  https://www.lidihuo.com/maven/maven-index.html 
 
  Maven提供了两种软件: 
 
 Maven Eclipse插件  
 Maven命令行插件  
 
 
 Maven Eclipse插件
 
 它是最新的Eclipse版本(如火星,月神,氧气)的默认插件,可用于通过Eclipse创建Maven项目。
 
  安装Eclipse的Maven插件并将其与Selenium TestNG 
 
 大多数情况下,Maven插件会自动安装在Eclipse中,但是如果不存在,我们将转到 Eclipse Market Place >并搜索 Maven ,然后从此处下载 M2E集成版本。
 
 
 
  创建Maven项目的步骤 
 
 要创建Maven项目,请执行以下步骤: 
 
转到文件→新建→项目  
 然后,展开 Maven 文件夹并选择 Maven Project 选项,然后单击 Next
 
然后,展开 Maven 文件夹并选择 Maven Project 选项,然后单击 Next  
 再次点击下一步按钮以进行进一步的操作。
 
再次点击下一步按钮以进行进一步的操作。 
 不执行任何操作,点击 Next 按钮。
 
不执行任何操作,点击 Next 按钮。 
 在单击"下一步"按钮后,在本例中,我们将提供 Group ID 和工件ID ,并将Group ID命名为 MavenProject 并将工件ID设置为 MavenProject ,然后单击完成按钮,如下面的屏幕截图所示:
 
在单击"下一步"按钮后,在本例中,我们将提供 Group ID 和工件ID ,并将Group ID命名为 MavenProject 并将工件ID设置为 MavenProject ,然后单击完成按钮,如下面的屏幕截图所示:  
 创建完Maven项目后,我们的 Maven文件夹结构将如下所示:
 
创建完Maven项目后,我们的 Maven文件夹结构将如下所示:  
 
 
 Maven命令行插件
 
 它用于在没有Eclipse的情况下在命令提示符下执行Selenium测试脚本,并且该软件应明确安装。
 
 Maven命令行插件的安装步骤
 
 要安装Maven命令行插件,请按照以下步骤操作: 
 
 
 注意: 在开始Maven的安装过程之前,我们将确保已安装Java并且还设置了环境变量。 
 
  第一步: 下载Apache Maven 
 
首先,转到Google搜索 Maven下载,然后单击"第一"链接,如下面的屏幕截图所示: 
  单击链接后,它将导航到Maven社区。除了二进制zip归档文件之外,请点击给定的链接,如下面的屏幕截图所示:
  
单击链接后,它将导航到Maven社区。除了二进制zip归档文件之外,请点击给定的链接,如下面的屏幕截图所示: 
  下载zip文件夹,然后解压缩该文件夹并将其放置到 C驱动器,然后复制该文件夹的位置。
  
下载zip文件夹,然后解压缩该文件夹并将其放置到 C驱动器,然后复制该文件夹的位置。 
 
 
  第二步: 在系统变量中添加M2_Home 
 
复制位置后,我们将转到环境变量窗口,然后点击系统变量部分的新建按钮,如下图所示:  
 之后,我们将提供变量名称和变量值,然后单击确定
 
之后,我们将提供变量名称和变量值,然后单击确定  
 
 
  第3步: 将%M2_Home%\ bin添加到路径 
 
一旦创建了M2_Home系统变量,我们将找到 Path 变量,然后单击 Edit 按钮,如下面的屏幕截图所示:  
 编辑变量窗口将出现在屏幕上,然后我们点击新建按钮和%M2_Home%\ bin 值,并点击确定
 
 编辑变量窗口将出现在屏幕上,然后我们点击新建按钮和%M2_Home%\ bin 值,并点击确定  
 
 
  第4步: 验证 
 
设置环境变量后,我们将检查Maven是否已成功安装。 
为此,我们将打开命令提示符并键入以下命令:  
 
 
 我们可以在上面的屏幕截图中看到Apache Maven已成功安装。
 
我们可以在上面的屏幕截图中看到Apache Maven已成功安装。 
如何使用Maven处理或下载依赖项Jar 
 
 在开始编写Maven代码之前,我们需要添加常规依赖项,例如 TestNG 和 Selenium 文件。
 
 为此,我们将遵循以下过程: 
 
我们自动在同一项目中获得Pom.xml文件。 
要下载 TestNG 和 Selenium 的依赖项jar,我们应该为Pom.xml文件中的所有工具编写依赖项代码。 
要获取依赖项代码,请转到Google搜索并键入" TestNG Maven依赖项",然后单击给定的链接。 
 并复制TestNG的依赖项代码,然后粘贴到pom.xml文件中。
  
并复制TestNG的依赖项代码,然后粘贴到pom.xml文件中。
 在作用域部分中,将值从 test 更改为 compile ,最终依赖项代码将如下所示:
  
在作用域部分中,将值从 test 更改为 compile ,最终依赖项代码将如下所示:  
 
  
  <dependency>
 <groupId>org.testng</groupId>
 <artifactId>testng</artifactId>
 <version>6.8</version>
 <scope>compile</scope>
</dependency>
 
   
  
 然后,我们将为Selenium添加Maven依赖项,因此,我们将按照与之前相同的过程进行操作: 
 
转到Google并搜索" MavenSelenium依赖性",然后单击给定的链接,如下图所示:  
 然后从链接中复制依赖项代码,并将其粘贴到 xml 文件中。
 
然后从链接中复制依赖项代码,并将其粘贴到 xml 文件中。 
 添加 TestNG和Selenium 的依赖性代码后,Pom.xml文件将如下所示:
 
添加 TestNG和Selenium 的依赖性代码后,Pom.xml文件将如下所示:  
 
  
  <dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.8</version>
<scope>compile</scope>
</dependency>
 <dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>
 </dependencies>
 
   
  
然后按 ctrl + s 保存pom.xml文件。 
添加完依赖项后,我们可以看到所有jar文件都已添加到 MavenProject 下的 Maven Dependencies 文件夹中。 
 
  
通过Maven和TestNG执行Selenium代码
 
我们将在@ Test,@ BeforeTest和@AfterTest TestNG注释的帮助下编写一个示例测试用例。 
首先,我们将启动 Google Chrome  
然后,导航至lidihuo网站。 
并通过 getTitle(), getCurrentURL() 获得网站的当前页面URL和标题。 
  注意 
 
  getTitle(): : 此方法用于捕获页面标题。
 
  getCurrentURL(): 用于捕获页面的当前URL。
 
 为执行上述测试脚本,我们将在MavenProject中创建一个包。
 
要在MavenProject中创建一个包,我们将右键单击 src/test/java→新建→包  
 在那之后,我们将提供的软件包名称为" testpackage ",然后单击 Finish (完成)按钮,如下图所示:
 
在那之后,我们将提供的软件包名称为" testpackage ",然后单击 Finish (完成)按钮,如下图所示:  
 创建包后,我们将创建一个类。
  
创建包后,我们将创建一个类。 
 要在MavenProject中创建一个类,请遵循以下过程: 
 
右键单击新创建的包,然后从给定列表中选择 New ,然后选择 Class ,如下图所示:  
  测试包→新建→类 
 
 然后,将类的名称提供为" MavenTest1 ",然后点击完成
 
然后,将类的名称提供为" MavenTest1 ",然后点击完成  
 
 
 创建包和类之后,我们将开始编写代码。
 
 根据我们的代码要求,我们将添加多个依赖项。
 
 添加依赖项后,我们的pom.xml文件如下所示: 
 
 
  
  <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.8</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version>4.1.0</version>
<classifier>no_aop</classifier>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-chrome-driver</artifactId>
<version>2.50.0</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>22.0</version>
</dependency>
<dependency>
<groupId>com.google.api-client</groupId>
<artifactId>google-api-client-appengine</artifactId>
<version>1.23.0</version>
<exclusions>
<exclusion>
<groupId>com.google.guava</groupId>
<artifactId>guava-jdk5</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.2.4</version>
</dependency>
</dependencies>
 
   
  
 还有,这里是示例代码: 
 
 
  
  package testpackage;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
public class MavenTest1 {
public String baseUrl = "https://www.lidihuo.com/";
String driverPath = "C://chromedriver_win321//chromedriver.exe";
public WebDriver driver ; 
@Test           
public void test() {   
// set the system property for Chrome driver   
System.setProperty("webdriver.chrome.driver", driverPath);
// Create driver object for CHROME browser
driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
driver.manage().window().maximize();
driver.get(baseUrl);
// get the current URL of the page
String URL= driver.getCurrentUrl();
System.out.print(URL);
//get the title of the page
String title = driver.getTitle();              
System.out.println(title);
}   
@BeforeTest
public void beforeTest() { 
System.out.println("before test");
}   
@AfterTest
public void afterTest() {
driver.quit();
System.out.println("after test");
}       
} 
   
  
执行代码
 
 我们可以通过多种方式运行上述代码: 
 
 运行TestNG  
 通过Maven运行  
 通过命令行运行  
通过TestNG运行
 
 如果我们通过TestNG运行上述代码,我们将遵循以下过程: 
 
右键单击 java 文件,然后选择 Run As→1 TestNG Test ,如下图所示:  
 成功运行代码后,将显示以下输出:
 
成功运行代码后,将显示以下输出:  
 它将在控制台窗口中启动浏览器,如下面的屏幕快照所示:
 
它将在控制台窗口中启动浏览器,如下面的屏幕快照所示:  
 
  
通过Maven运行
 
 要通过Maven运行相同的代码,请执行以下步骤: 
 
 首先,我们需要转换将MavenTest1.java 文件添加到 TestNG 文件中,为此,请执行以下过程: 
 
右键单击 java 文件,然后选择 TestNG ,然后在给定列表中选择转换为TestNG 选项。 
 选择转换为TestNG 选项后,它将打开以下窗口,然后,单击完成
 
选择转换为TestNG 选项后,它将打开以下窗口,然后,单击完成  
 然后,转换后的TestNG文件将如下所示:
 
然后,转换后的TestNG文件将如下所示:  
 
 
 此后,我们将运行 testng.xml 文件,为此,我们需要在 pom.xml 文件中添加Maven插件。
 
 因此,我们将添加三个不同的插件,如下所示: 
 
 Maven编译器插件  
 Maven surefire插件  
 Maven源插件  
  注意: 
 
  Maven编译器插件用于编译Maven项目的源代码。 Maven测试命令将连接到互联网,并将所有依赖项jar下载到.M2文件夹本地存储库中,然后编译整个Selenium源代码,如下图所示: 
 
 
 
 当我们必须运行应用程序的单元测试时,将使用 Maven surefire插件。
 
  Maven源插件用于构建包含 .java 源文件的jar文件。
 
 添加所有插件后,我们的pom.xml看起来像这样: 
 
 
  
  <build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>C:\Users\JTP\eclipse-workspace\MavenProject\testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin> 
</plugins>
</build>
 
   
  
保存pom.xml文件并执行代码。 
要执行上述代码,请右键单击 MavenProject→运行方式→Maven测试,如下图所示:  
 所有测试用例通过并成功运行Build时,将提供以下输出:
 
所有测试用例通过并成功运行Build时,将提供以下输出:  
 它将在控制台窗口中启动浏览器,如下面的屏幕截图所示:
 
它将在控制台窗口中启动浏览器,如下面的屏幕截图所示:  
 
 
通过命令行运行
 
 在Maven命令的帮助下正在使用某个远程计算机,那么我们需要转到命令提示符。
 
 为此,我们将转到Maven项目的特定目录,因此请右键单击在 MavenProject 上,然后从给定的弹出菜单中选择属性选项。
 
 然后,复制 MavenProject 的位置并粘贴在命令提示符下,以找到文件的正确位置。
 
然后,复制 MavenProject 的位置并粘贴在命令提示符下,以找到文件的正确位置。 
 然后,在命令提示符下键入以下命令:
 
然后,在命令提示符下键入以下命令:  
 
  
  cd eclipse-workspace\MavenProject
 
   
  
 
 
 
 一旦我们进入MavenProject,我们将使用Maven的一些常见命令,如下: 
 
 
 
   
   | Maven命令 | 说明 | 
 
   
   | mvn全新安装 | 此命令用于生成,编译和执行jar文件。 | 
 
   
   | MVN测试 | 当我们必须在适当的单元测试框架的帮助下针对已编译的源代码执行测试时,将使用此命令。 | 
 
   
   | mvn编译 | 它用于编译Maven项目的源代码。 | 
 
   
   | mvn软件包 | 它将以其他格式(如Jar)打包执行的代码。 | 
 
 
 
在这里,我们将执行 mvn全新安装  
并且,此命令将执行Maven的所有四个生命周期,然后执行测试用例,并创建jar文件。成功执行后,将启动浏览器,并且构建也成功完成,如下面的屏幕截图所示:  
 
 
  示例2 : 在此示例中,我们仅创建了两个单元测试用例,我们将对两个变量(p和q)进行加减法运算,并通过TestNG和Maven运行代码。
 
 这里是示例代码: 
 
 
  
  package testpackage;
import org.testng.Assert;
import org.testng.annotations.Test;
public class demo1 {
@Test
public void sum() {
System.out.print("Sum method");
int p=10;
int q=20;
Assert.assertEquals(30, p+q);
}
@Test
public void sub() {
System.out.print("Sub method");
int p=20;
int q=10;
Assert.assertEquals(10, p-q);
}
} 
   
  
在TestNG中执行代码
 
 要在TestNG的帮助下运行代码,请执行以下过程: 
 
右键单击 java 文件,然后选择 Run As→1 TestNG Test ,如下图所示:  
 成功运行代码后,它将提供以下输出:
 
成功运行代码后,它将提供以下输出:  
 
  
通过Maven执行代码
 
 要在Maven的帮助下运行相同的代码,请执行以下步骤: 
 
首先,为此,我们需要将Demo1.java文件转换为TestNG文件 
右键单击 java 文件,选择 TestNG ,然后在给定的弹出菜单中选择转换为TestNG 。 
 而且,我们还可以根据需要更改文件名,然后单击完成
 
而且,我们还可以根据需要更改文件名,然后单击完成  
 之后,我们将像上面示例中一样通过插件提供 xml 文件到 pom.xml 文件的路径:
 
之后,我们将像上面示例中一样通过插件提供 xml 文件到 pom.xml 文件的路径:  
 
  
  <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>C:\Users\JTP\eclipse-workspace\MavenProject\testng1.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
 
   
  
在pom.xml文件中添加Maven-surefire-plugin后,我们将按ctrl + s保存文件。 
然后,右键单击 MavenProject→运行方式→Maven测试,如下图所示:  
 所有测试用例通过并成功运行Build时,将提供以下输出:
 
所有测试用例通过并成功运行Build时,将提供以下输出:  
