软件测试实验6

实验项目名称:实验         

一、 实验目的

1掌握 Selenium 自动化测试环境搭建

2学习录制与回放测试脚本

3实现检查点验证与参数化测试

 

二、 实验内容

 

1任务一:录制并回放GitHub搜索操作  

目标:录制“搜索GitHub仓库”的操作,并自动回放。

2任务二:验证搜索结果标题(检查点)  

目标:编写脚本检查GitHub搜索结果的标题是否包含关键词。

3任务三:参数化测试(多关键词搜索)  

目标:用不同关键词测试搜索结果的正确性。

 

三、 实验步骤及结果

步骤1:启动Selenium IDE并创建项目  

1. 点击Firefox右上角红色“S”图标 → 点击 “Create New Project”。  

2. 输入项目名称(例如 GitHubSearch),在 “Base URL” 输入https://github.com

 

  1. 点击 Start Recording” 开始录制。

 

步骤2:录制搜索操作  

  1. Firefox自动打开GitHub首页,在搜索框输入 Selenium,按回车键搜索。

  

2. 页面跳转至搜索结果页后,返回Selenium IDE界面,点击 “Stop Recording”。  

注意:操作时不要关闭Selenium IDE窗口。  

步骤3:回放脚本  

 

任务二:验证搜索结果标题(检查点)  

目标:编写脚本检查GitHub搜索结果的标题是否包含关键词。  

步骤1:安装PythonSelenium库  

1. 安装Python:  

   - 访问 [Python官网](https://www.python.org/downloads/),下载最新版本。  

   - 运行安装程序,务必勾选 “Add Python to PATH” → 完成安装。  

2. 验证安装:  

   - Win + R 输入 cmd → 输入 python --version,显示版本号即成功。

  

3. 安装Selenium库:  

   - CMD中输入以下命令:  

      bash

      pip install selenium webdriver-manager

步骤2:编写检查点脚本  

1. 打开记事本(或VSCode等编辑器),复制以下代码:  

from selenium import webdriver

from selenium.webdriver.common.by import By

from webdriver_manager.firefox import GeckoDriverManager

 

# 自动启动Firefox浏览器

driver = webdriver.Firefox(executable_path=GeckoDriverManager().install())

driver.get("https://github.com")

 

# 搜索关键词"Selenium"

search_box = driver.find_element(By.NAME, "q")

search_box.send_keys("Selenium")

search_box.submit()

 

# 检查标题是否包含"Selenium"

assert "Selenium" in driver.title, "❌ 检查点失败:标题缺少关键词!"

print("✅ 检查点验证成功!")

 

driver.quit()  # 关闭浏览器2. 保存文件为 github_test.py(注意后缀是 .py)。  

 

代码解释:  

- driver = webdriver.Firefox(...):自动下载驱动并打开浏览器。  

- assert "Selenium" in driver.title:如果标题不包含关键词,报错并停止脚本。

步骤3:运行脚本  

1. CMD中进入脚本所在目录(例如文件在桌面):  

    bash

   cd Desktop

   python github_test.py

   

2. 预期结果:  

   - 浏览器自动打开GitHub并搜索 → 控制台显示 ✅ 检查点验证成功!”。  

  

 

任务三:参数化测试(多关键词搜索)  

目标:用不同关键词测试搜索结果的正确性。  

步骤1:准备测试数据文件  

1. 右键桌面 → 新建文本文档 → 输入以下内容:  

   csv

   keyword,expected_result

   Selenium,有结果

   InvalidKeyword123,无结果

  

  1. 保存文件为 search_data.csv(后缀改为 .csv)。

 

步骤2:编写参数化脚本  

1. 新建文件 github_param_test.py,复制以下代码:  

   import csv

import pytest

from selenium import webdriver

from selenium.webdriver.common.by import By

from webdriver_manager.firefox import GeckoDriverManager

 

def read_csv():

    with open('search_data.csv', 'r') as f:

        return list(csv.DictReader(f))

 

@pytest.mark.parametrize("data", read_csv())

def test_search(data):

    driver = webdriver.Firefox(executable_path=GeckoDriverManager().install())

    driver.get("https://github.com")

 

    # 输入关键词并搜索

    search_box = driver.find_element(By.NAME, "q")

    search_box.send_keys(data["keyword"])

    search_box.submit()

 

    # 根据预期结果验证

    if data["expected_result"] == "有结果":

        assert "No results matched" not in driver.page_source

    else:

        assert "No results matched" in driver.page_source

 

driver.quit()

 

 

步骤3:执行测试  

1. CMD中输入:  

   bash

   pip install pytest  # 仅首次需要安装

   pytest github_param_test.py -v

 

  

2. 预期输出:  

   plaintext

   ============== test session starts ==============

   collected 2 items

 

   github_param_test.py::test_search[Selenium-有结果] PASSED

   github_param_test.py::test_search[InvalidKeyword123-无结果] PASSED

 

 

 

 

 

四、 个人体会

  1. 实验中遇到的问题

问题:运行任务三的参数化测试脚本github_param_test.py时,报NameError,提示driver未定义,且控制台输出显示测试用例执行不完整。

解决方法:仔细检查代码发现,driver.quit()语句放在了测试函数test_search外部,导致在执行driver.quit()时,driver超出作用域无法识别。将driver.quit()语句缩进,放置在test_search函数内部测试逻辑执行完毕后,问题得到解决。

问题描述:在任务二中,运行检查点验证脚本时,出现 “ 检查点失败:标题缺少关键词!” 的错误提示,而实际上页面已经正确显示搜索结果。

解决方法:通过打印driver.title查看实际标题内容,发现 GitHub 搜索结果页面的标题并非完全包含 “Selenium”,而是包含如 “Search・Selenium・GitHub” 的格式。修改断言语句为assert "Search · Selenium · GitHub" in driver.title,或者采用更灵活的字符串匹配方式,如使用正则表达式,确保标题检查的准确性。

  1. 体会:

  通过这次实验学会了使在实验过程中遇到多种问题,通过查阅官方文档、技术论坛以及分析错误提示,逐步排查和解决问题,提升了调试代码和处理实际问题的能力。用 Selenium IDE 录制和回放测试脚本,能够快速生成基础的自动化测试流程;通过编写 Python 脚本,实现了检查点验证和参数化测试,掌握了元素定位、页面交互、断言机制以及数据驱动测试的核心技术。

 

posted @ 2025-06-12 16:45  chrisrmas、  阅读(14)  评论(0)    收藏  举报