【JavaAPI搜索引擎】自动化测试报告

API搜索引擎自动化测试报告

  • 前言
  • 脑图
  • 代码编写
    • 公共类Utils
    • 搜索页面SearchPage
    • AutoBlogTestApplicationTests
  • 进行测试

前言

针对API搜索引擎项目进行测试,个人博客主要由一个搜索页面构成:主要功能包括:输入一个查询词,可以得到若干个搜索结果,同时还可以针对搜索结果的标题进行点击,对于搜索引擎的测试主要就是针对搜索功能进行测试,然后书写测试类。

个人项目地址:http://123.56.249.238:8080/index.html

自动化测试一般步骤:

1)使用脑图编写web自动化测试用例

2)创建自动化项目,根据用例来实现脚本

脑图

根据脑图对主要的搜索功能进行测试:

代码编写

  1. 创建一个公共包,在这个包下编写公共类:Utils
  2. 在AutoBlogTestApplicationTests中执行测试用例
  3. 创建一个tests包,在这个包中编写SearchPage类测试搜索功能

公共类Utils

  1. 创建驱动、保存现场截图
  2. 注意:在保存现场截图的时候命名是按时间来进行文件夹的划分,然后图片的名称要体现出测试类的类名,方便进行问题的追溯。
  3. 注意文件名的动态获取,注意时间格式的设置。
  4. 注意:可以在创建驱动的时候修改默认的有头模式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

  1. 创建驱动,并打开页面
  2. 测试页面是否正常打开
  3. 测试输入框是否可以输入内容
  4. 输入"Arrays",之后测试搜索按钮是否可以正常点击
  5. 测试搜索结果是否正确,是否含有结果"Arrays"
  6. 测试点击Arrays之后是否可以跳转到Arrays页面
  7. 测试Arrays页面上的元素是否可以正常点击
  8. 清空内容之后搜索框是否可以再次输入内容
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();
    }

}

进行测试

查看控制台,没有出现报错,测试通过:

相关推荐
G皮T1 小时前
【Elasticsearch】映射:Join 类型、Flattened 类型、多表关联设计
大数据·elasticsearch·搜索引擎·nested·join·多表关联·flattened
G皮T1 小时前
【Elasticsearch】映射:Nested 类型
大数据·elasticsearch·搜索引擎·映射·nested·嵌套类型·mappings
仙人掌_lz5 小时前
如何打造一款金融推理工具Financial Reasoning Workflow:WebUI+Ollama+Fin-R1+MCP/RAG
人工智能·搜索引擎·ai·金融·llm·rag·mcp
marteker5 小时前
年度峰会上,抖音依靠人工智能和搜索功能吸引广告主
人工智能·搜索引擎
G皮T21 小时前
【Elasticsearch】映射:null_value 详解
大数据·elasticsearch·搜索引擎·映射·mappings·null_value
冒泡的肥皂2 天前
强大的ANTLR4语法解析器入门demo
后端·搜索引擎·编程语言
livemetee2 天前
一个完整的日志收集方案:Elasticsearch + Logstash + Kibana+Filebeat (二)
大数据·elk·搜索引擎
安审若无2 天前
Elasticsearch中的监控(Monitoring)功能介绍
elasticsearch·搜索引擎·全文检索
咸鱼求放生3 天前
es在Linux安装
大数据·elasticsearch·搜索引擎