【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();
    }

}

进行测试

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

相关推荐
MemoriKu8 小时前
Flutter 本地 AI 相册工程收口:从屏幕常亮、标签体系到照片属性后台队列
大数据·人工智能·python·flutter·elasticsearch·搜索引擎·数据库架构
Elastic 中国社区官方博客9 小时前
Elasticsearch:使用向量搜索构建现代应用的最佳实践
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
老陈头聊SEO10 小时前
长尾关键词优化策略助力SEO效果提升的关键要素
其他·搜索引擎·seo优化
是潮汕的灿灿展吖12 小时前
elasticsearch单机版本数据迁移
大数据·elasticsearch·搜索引擎
金融支付架构实战指南13 小时前
ES电商检索方案设计案例
大数据·elasticsearch·搜索引擎
LB96781613 小时前
外贸企业GEO优化怎么做?独立站AI搜索引擎排名策略详解
大数据·人工智能·搜索引擎·外贸独立站·ai建站·geo优化·ai搜索排名
Java 码思客1 天前
【ElasticSearch从入门到架构师】第9章:ES 读写底层流程深度拆解
大数据·elasticsearch·搜索引擎
daad7771 天前
记录一个zmq客户端的性能调优
大数据·elasticsearch·搜索引擎
me8321 天前
【AI面试】小白理解大模型:大模型的分词器和传统的中文分词有什么区别?对于指定的词表,一句话是不是只有唯一的分词方式?
人工智能·gpt·搜索引擎·ai