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完成,後續會有更詳細全面的總結。