API搜索引擎自动化测试报告
- 前言
- 脑图
- 代码编写
-
- 公共类Utils
- 搜索页面SearchPage
- AutoBlogTestApplicationTests
- 进行测试
前言
针对API搜索引擎项目进行测试,个人博客主要由一个搜索页面构成:主要功能包括:输入一个查询词,可以得到若干个搜索结果,同时还可以针对搜索结果的标题进行点击,对于搜索引擎的测试主要就是针对搜索功能进行测试,然后书写测试类。
个人项目地址:http://123.56.249.238:8080/index.html
自动化测试一般步骤:
1)使用脑图编写web自动化测试用例
2)创建自动化项目,根据用例来实现脚本
脑图
根据脑图对主要的搜索功能进行测试:
代码编写
- 创建一个公共包,在这个包下编写公共类:Utils
- 在AutoBlogTestApplicationTests中执行测试用例
- 创建一个tests包,在这个包中编写SearchPage类测试搜索功能
公共类Utils
- 创建驱动、保存现场截图
- 注意:在保存现场截图的时候命名是按时间来进行文件夹的划分,然后图片的名称要体现出测试类的类名,方便进行问题的追溯。
- 注意文件名的动态获取,注意时间格式的设置。
- 注意:可以在创建驱动的时候修改默认的有头模式or无头模式
java
package common;
import io.github.bonigarcia.wdm.WebDriverManager;
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.time.Duration;
public class Utils {
public static WebDriver driver;
public static WebDriver createDriver(){
if(driver == null){
WebDriverManager.chromedriver().setup();
ChromeOptions options = new ChromeOptions();
//允许访问所有的连接
options.addArguments("--remote-allow-origins=*");
driver = new ChromeDriver(options);
//设置为无头模式:
options.addArguments("-headless");
//隐式等待
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(2));
}
return driver;
}
public Utils(String url){
//调用driver对象
driver = createDriver();
//访问URL
driver.get(url);
}
//进阶版本的屏幕截图
public void getScreenShot(String str) throws IOException {
// .src/test/image/
// /2024-7-17/
// /test01-170430.png
// /test02-180430.png
// /2024-7-18/
// /test01-170430.png
// /test02-180430.png
//第一个格式是年月日的设计 /2024-7-17/
SimpleDateFormat sim1 = new SimpleDateFormat("yyyy-MM-dd");
//第二个格式是文件名称日期的设计:/test01-170430.png
SimpleDateFormat sim2 = new SimpleDateFormat("HHmmssSS");
//第一个获取到当前年月日时间戳
String dirTime = sim1.format(System.currentTimeMillis());
//第二个获取到当前时分秒的时间戳
String fileTime = sim2.format(System.currentTimeMillis());
String filename = "./src/test/image/" +dirTime + "/"+str +"-" + fileTime +".png";
File srcFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
//src放到指定的位置
FileUtils.copyFile(srcFile, new File(filename));
}
}
搜索页面SearchPage
- 创建驱动,并打开页面
- 测试页面是否正常打开
- 测试输入框是否可以输入内容
- 输入"Arrays",之后测试搜索按钮是否可以正常点击
- 测试搜索结果是否正确,是否含有结果"Arrays"
- 测试点击Arrays之后是否可以跳转到Arrays页面
- 测试Arrays页面上的元素是否可以正常点击
- 清空内容之后搜索框是否可以再次输入内容
java
package tests;
import common.Utils;
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.By;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import java.io.File;
import java.io.IOException;
import java.time.Duration;
import java.util.Set;
public class SearchPage extends Utils {
public static String url = "http://123.56.249.238:8080/index.html";
public SearchPage() {
super(url);
}
//对搜索框的搜索功能进行测试:
public void testSearch() throws IOException {
createDriver();
//找到搜索框,输入关键词Arrays
driver.findElement(By.cssSelector("body > div > div.header > input[type=text]")).sendKeys("Arrays");
//然后点击搜索按钮,进行搜索操作
driver.findElement(By.cssSelector("#search-btn")).click();
//检查页面上的Arrays是否可以正常点击
driver.findElement(By.cssSelector("body > div > div.result > div:nth-child(2) > a")).click();
//找到当前这个driver:
String curHandle = driver.getWindowHandle();
//进行driver的切换
Set<String> allHandles = driver.getWindowHandles();
for(String handle : allHandles){
if(handle != curHandle){
driver.switchTo().window(handle);
}
}
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(2));
File srcFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
//srcFile放到指定的位置
FileUtils.copyFile(srcFile, new File("my.png"));
//点击Arrays的页面是否可以跳转
driver.findElement(By.cssSelector("body > header > nav > div.fixedNav > div.topNav > ul > li:nth-child(8) > a")).click();
driver.close();
driver.switchTo().window(curHandle);
driver.findElement(By.cssSelector("body > div > div.header > input[type=text]")).clear();
driver.findElement(By.cssSelector("body > div > div.header > input[type=text]")).sendKeys("list");
driver.findElement(By.cssSelector("#search-btn")).click();
driver.quit();
}
}
AutoBlogTestApplicationTests
java
@SpringBootTest
class AutoBlogTestApplicationTests {
public static void main(String[] args) throws IOException {
SearchPage searchPage = new SearchPage();
searchPage.testSearch();
}
}
进行测试
查看控制台,没有出现报错,测试通过:
