Skip to content

测试人论坛搜索功能自动化测试


目录

  • 产品分析
  • 测试用例分析
  • 编写脚本
  • 脚本优化

产品分析

  • 产品:测试人论坛
  • 功能:搜索

https://ceshiren.com


测试用例分析

用例标题 前提条件 用例步骤 预期结果 实际结果
测试人搜索功能 进入测试人论坛首页 1. 点击搜索按钮
2. 输入搜索关键词
3. 点击搜索按钮
1. 搜索成功
2. 搜索结果列表包含关键字

编写脚本

Python版本

from selenium import webdriver
from selenium.webdriver.common.by import By


class TestCeShiRen:
    def test_search(self):
        # 初始化WebDriver
        driver = webdriver.Chrome()
        # 打开被测地址,测试人社区搜索页面
        driver.get("https://www.ceshiren.com")
        # 定位搜索按钮
        driver.find_element(By.ID, "search-button").click()
        # 定位搜索输入框,并输入搜索内容
        driver.find_element(By.ID, "search-term").send_keys("appium")
        # 定位搜索按钮,并点击搜索
        driver.find_element(By.CSS_SELECTOR, ".show-advanced-search").click()


Java 版本

import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class CeshirenTest {
    public static WebDriver driver;

    @Test
    void search() throws InterruptedException {
        driver = new ChromeDriver();
//        进入测试人论坛首页 前提条件
        driver.get("https://ceshiren.com/");
//        1. 点击搜索按钮
        driver.findElement(By.id("search-button")).click();
//        2. 输入搜索关键词
        driver.findElement(By.id("search-term")).sendKeys("appium");
//        3. 点击搜索按钮
        driver.findElement(By.cssSelector(".show-advanced-search")).click();
        Thread.sleep(3000);

    }
}

脚本优化-前置与后置

Python 版本

class TestCeShiRen:
    def setup_class(self):
        # 初始化WebDriver
        self.driver = webdriver.Chrome()

    def teardown_class(self):
        # 退出浏览器
        self.driver.quit()

    def test_search(self):
        # 打开被测地址,测试人社区搜索页面
        self.driver.get("https://www.ceshiren.com")
        # 定位搜索按钮
        self.driver.find_element(By.ID, "search-button").click()
        # 定位搜索输入框,并输入搜索内容
        self.driver.find_element(By.ID, "search-term").send_keys("appium")
        # 定位搜索按钮,并点击搜索
        self.driver.find_element(By.CSS_SELECTOR, ".show-advanced-search").click()

Java 版本

  • 前置:BeforeAll - 初始化浏览器驱动
  • 后置:AfterAll - 关闭浏览器
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
// CeshirenTest+search 测试人论坛的搜索功能 对应 用例标题

public class CeshirenTest {
    public static WebDriver driver;
    @BeforeAll
    static void setUpClass(){
        driver = new ChromeDriver();
        driver.get("https://ceshiren.com/");
    }
    @AfterAll
    static void tearDownClass(){
        driver.quit();
    }

    @Test
    void search() throws InterruptedException {
        driver = new ChromeDriver();
//        进入测试人论坛首页 前提条件
        driver.get("https://ceshiren.com/");
//        1. 点击搜索按钮
        driver.findElement(By.id("search-button")).click();
//        2. 输入搜索关键词
        driver.findElement(By.id("search-term")).sendKeys("appium");
//        3. 点击搜索按钮
        driver.findElement(By.cssSelector(".show-advanced-search")).click();
        Thread.sleep(3000);

    }
}

脚本优化-添加断言

Python 版本

class TestCeShiRen:
    def setup_class(self):
        # 初始化WebDriver
        self.driver = webdriver.Chrome()

    def teardown_class(self):
        # 退出浏览器
        self.driver.quit()

    def test_search(self):
        # 打开被测地址,测试人社区搜索页面
        self.driver.get("https://www.ceshiren.com")
        # 定位搜索按钮
        self.driver.find_element(By.ID, "search-button").click()
        # 定位搜索输入框,并输入搜索内容
        self.driver.find_element(By.ID, "search-term").send_keys("appium")
        # 定位搜索按钮,并点击搜索
        self.driver.find_element(By.CSS_SELECTOR, ".show-advanced-search").click()
        time.sleep(2)
        # 获取该元素的文本信息
        web_ele = self.driver.find_element(By.CSS_SELECTOR, ".topic-title")
        title_text = web_ele.text
        # 断言元素文本是否预期结果一致
        assert "appium" in title_text

Java 版本

  • assertThat 语句
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

import java.util.List;

import static org.hamcrest.CoreMatchers.containsString;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertEquals;

/*
 * @Author: 霍格沃兹测试开发学社
 * @Desc: '更多测试开发技术探讨,请访问:https://ceshiren.com/t/topic/15860'
 */

//测试人论坛的测试用例
public class CeshirenTest {
    public static WebDriver driver;
    // 前置、
    @BeforeAll
    static void setUpClass(){
        driver = new ChromeDriver();
        // 进入测试人论坛首页    前提条件
        driver.get("https://ceshiren.com/");
    }
    @AfterAll
    // 后置
    static void tearDownClass(){
        driver.quit();
    }
    @Test
    void search() throws InterruptedException {
        //1. 定位到搜索按钮 点击搜索按钮
        driver.findElement(By.id("search-button")).click();
        //2. 定位到输入框 输入搜索关键词
        driver.findElement(By.id("search-term")).sendKeys("selenium");
        //3. 定位到高级搜索按钮, 点击搜索按钮
        driver.findElement(By.cssSelector(".show-advanced-search")).click();
        Thread.sleep(3000);
        WebElement title = driver.findElement(By.cssSelector(".topic-title"));
        // 获取该元素的文本信息
        String title_text = title.getText();
        System.out.println(title_text);
        assertThat(title_text, containsString("selenium"));

    }

}

总结