这是个自动化测试框架的简单介绍以及搭建步骤,在这里我们使用的语言是java,到的工具有selenium,testng,maven,IDE的话idea和myeclipse都可以,这里使用的是idea2018。
下面简单介绍下各个工具和它们的使用以及框架搭建步骤。
maven 是什么
官方释义是maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。但是这样的介绍还是略显抽象,在我看来,maven的核心功能是依赖,那什么是依赖呢,依赖就是maven的配置文件pom.xml里所定义的一种规则,我们可以通过在pom.xml里设置依赖以添加我们所需要的jar包。
来想象这样一个场景,有两个java项目a和b,a需要b里的一些类,这时候就需要把b打成jar包,然后在a项目里导入jar包,当a所需的类来自很多其他项目时,就要手工导入很多jar包,在这种场景下,maven可以就可以帮助我们省掉很多繁琐的步骤,我们可以把maven看作是一个外壳,在这个外壳下,java项目还是普通java项目,maven这个外壳只是赋予了这个项目一些新的,方便的特性。
maven的安装以及在idea中的配置
下载maven安装包后解压并配置环境变量,完成后在cmd窗口输入mvn -v来验证是否安装成功,若返回版本号,即为安装成功。
安装完毕后配置本地仓库,在maven安装文件夹里找到config里的settings.xml,进行修改,如下:
<localRepository>D:\maven</localRepository>;
然后打开idea,在file-setting里,搜索选择maven,选择并设置maven目录和setting.xml文件目录,至此maven安装及配置完成。
新建maven项目并导入testng和selenium
idea的file里新建project,选择maven,新建一个maven项目,然后我们可以看到前面提到的pom.xml,打开后可以看到里面的内容,下面要做的就是添加依赖,即添加我们所需要的jar包,pom.xml里,groupId、artifactId、version三个属性就能定位一个jar包,在这三个属性标签之外,还有dependency和dependencies两个标签,我们需要在此添加的jar包有selenium和testng,如下所示:
<dependencies>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.14.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.14.0</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-server</artifactId>
<version>3.14.0</version>
</dependency>
</dependencies>
至此,再加上一个浏览器驱动程序,一个最基本的框架就搭建好了,这里用的是chromedriver,不多作介绍,下面来简单介绍下testng及其一个简单验证。
testng的简单介绍以及简单验证
testng是java中的一个测试框架, 类似于junit 和nunit,功能更加强大,我们先来写一个简单验证程序来看一下testng有没有导入成功:
import org.testng.Assert;
import org.testng.annotations.Test;
public class LdTest {
@Test
public void test() {
System.out.println("这是一个简单验证");
Assert.assertTrue(true);
}
}
运行结果如下,说明是没问题的:
上面程序里的@Test是testng的一个注解,testng支持多种注解,只作简单介绍,如下(表格为转载):
关于selenium
selenium是一个UI自动化的开源工具,需要配合浏览器驱动来使用,selenium调用chrome的类如下所示,这里简单展示了打开浏览器然后打开百度网站,获取网页标题并输出的方法,下面两种方法都可以,不同之处在于方法一把chromedriver放在了project里面,需要用setProperty()方法指定位置,方法二把chromedriver放在chrome安装路径下,不需要指定位置:
1、
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import java.io.File;
public class drivertest1 {
private static WebDriver driver;
private static File file;
@BeforeTest
public void beforeMethod() {
//System.setProperty("webdriver.chrome.driver","driver\\chromedriver.exe");
file=new File("driver\\chromedriver.exe");
System.setProperty("webdriver.chrome.driver",file.getAbsolutePath());
System.out.println(file.getAbsolutePath());
driver = new ChromeDriver();//初始化driver
driver.manage().window().maximize();
}
@AfterMethod
public void afterMethod() {
System.out.println("Page title is: " + driver.getTitle());
driver.quit();
}
@Test
public void test_case3() {
driver.get("http://www.baidu.com");
}
}
2、
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
//chromedriver放在了chrome安装目录下
public class drivertest {
WebDriver driver;
@BeforeMethod
public void beforeMethod() {
driver = new ChromeDriver();
}
@AfterMethod
public void afterMethod() {
System.out.println("Page title is: " + driver.getTitle());
driver.quit();
}
@Test
public void test_case3() {
driver.get("http://www.baidu.com");
}
}
selenium的主要定位方法有如下八种:
其中比较需要注意的是,根据xpath来进行定位时,尽量使用相对路径,因为使用绝对路径的话,一是代码太长不方便阅读,二是在以后的开发过程中,如果路径稍有变动,脚本就会运行报错。
新建一个xml文件来存放所有测试类
当我们的脚本越来越多后,可以新建一个xml文件来存放所有类,这样运行这个xml文件时就可以运行文件里包含的所有类,如下:
<?xml version="1.0" encoding="UTF-8"?>
<suite name="Suite" parallel="false">
<test name="Test">
<classes>
<class name="test01"/>
<class name="drivertest1"/>
<class name="IeTest"/>
<class name="FirefoxdriverTest"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
以上只是一个最最基本的自动化测试框架的搭建,如果要在实际工作中使用此类框架,这些当然是不够的,还有很多地方需要继续完善。