1 准备工作
UI自动化的工具选型如下:
- 编程语言:Java
- 编程IDE:IDEA
- 项目管理构建:maven,详情见 maven安装与使用
- UI自动化测试:selenium3.0
- 版本管理:git
- 持续集成:Jenkins,详情见:
- 浏览器:chrome
- webdriver:地址和备用地址,下载后解压到特定文件夹
2 项目构建
新建一个maven项目:
这里有一个坑:注意上图中红框信息,这里要选择自己安装的jdk,不然后续项目中会有莫名其妙的报错。
添加pom依赖,pom.xml文件全文如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>test-automation-ui</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<java.version>1.8</java.version>
<selenium.version>3.4.0</selenium.version>
<testng.version>6.14.3</testng.version>
</properties>
<dependencies>
<!-- selenium-java -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>${selenium.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.testng/testng -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>${testng.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
可以在这个 地址 中查找相应的依赖地址:
编写示例
下面编写一个简单的示例。
首先,创建一个Driver类,这个类主要是封装了webDriver,目前只提供了chrome的driver,后续可以添加Firefox等,在使用时直接从该类中调用相应方法即可。
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
/**
* @author muguozheng
* @date 2020/4/5 11:27
* @Description: driver配置
* @modify
*/
public class Driver {
WebDriver driver;
public WebDriver chromeDriver() {
String driverPath = "E:/source/driver/chromedriver_80_2.exe";
System.setProperty("webdriver.chrome.driver",driverPath);
ChromeOptions options = new ChromeOptions();
options.addArguments("--start-maximized"); // 启动时自动最大化窗口
options.addArguments("--disable-popup-blocking"); // 禁用阻止弹出窗口
options.addArguments("no-sandbox"); // 启动无沙盒模式运行
options.addArguments("disable-extensions"); // 禁用扩展
options.addArguments("no-default-browser-check"); // 默认浏览器检查
Map<String, Object> prefs = new HashMap();
prefs.put("credentials_enable_service", false);
prefs.put("profile.password_manager_enabled", false);
options.setExperimentalOption("prefs", prefs);// 禁用保存密码提示框
driver = new ChromeDriver(options);
//设置寻找一个元素的时间
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
return driver;
}
}
接着,创建一个测试类:
import com.common.Driver;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
/**
* @author muguozheng
* @date 2020/4/5 12:47
* @Description: demo
* @modify
*/
public class SeleniumTest {
WebDriver driver;
@BeforeTest
public void init() {
String url = "http://www.baidu.com";
// 新建一个浏览器句柄
driver = new Driver().chromeDriver();
//打开URL
driver.get(url);
}
@Test
@Parameters("keyWords")
public void search(String keyWords) throws InterruptedException {
//输入搜索字符串
driver.findElement(By.xpath("//*[@id=\"kw\"]")).sendKeys(keyWords);
//点击[百度一下]按钮
driver.findElement(By.xpath("//*[@id=\"su\"]")).click();
Thread.sleep(2000);
}
@AfterTest
public void teardown() {
driver.quit();
}
}
第三步,新建一个test.xml文件,并写入测试配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Test Of TestNG">
<test verbose="2" name="百度搜索">
<parameter name="keyWords" value="测试" />
<parameter name="keyWords" value="测试" />
<classes>
<class name="SeleniumTest">
<methods>
<include name="search" />
</methods>
</class>
</classes>
</test>
</suite>
在文件上邮件单击运行该文件,即可执行。
至此,一个较为完整的测试demo完成,后续会有更详细全面的总结。