用例录制
- seleniumIDE 用例录制使用场景
- 刚开始入门UI自动化测试
 - 团队代码基础较差
 - 技术成长之后学习价值不高
 
 
seleniumIDE 下载与安装
- 官网:https://www.selenium.dev/
- Chrome插件:https://chrome.google.com/webstore/detail/selenium-ide/mooikfkahbdckldjjndioackbalphokd
 - Firefox插件: https://addons.mozilla.org/en-US/frefox/addon/selenium-ide/
 - github release:https://github.com/SeleniumHO/selenium-ide/releases
 - 其他版本: https://addons.mozilla.org/en-GB/frefox/addon/selenium-ide/versions/
 - 注意:Chrome插件在国内无法下载,Firefox可以直接下载。
 - chrome 国内直接下载ide:谷歌浏览器安装Selenium IDE插件_谷歌selenium ide插件下载-CSDN博客
 
 - 下载完成后,打开浏览器扩展程序管理,拖拽下载好的ide插件文件进入即可,
- 点击打开固定到工具栏,页面上可显示此插件
 
 
启动
- 安装完成后,通过在浏览器的菜单栏中点击它的图标来启动
- 如果没有看到图标,先确保是否安装了seleniumIDE扩展插件
 - 通过以下链接访问所有插件
- Chrome:chrome://extensions
 - Firefox:about:addons
 
 
 
seleniumIDE 常用功能
- 
- 新建、保存、打开
 
 - 
- 开始和停止录制
 
 - 
- 运行8中的所有的实例
 
 - 
- 运行单个实例
 
 - 
- 调式模式
 
 - 
- 调试案例的运行速度
 
 - 
- 要录制的网址
 
 - 
- 实例列表
 
 - 
- 动作、目标、值
 
 - 
- 对单条命令的解释
 
 - 
- 运行日志
 
 
用例录制
- 
- 点击打开插件seleniumIDE
 
 - 
- 点击 vreate a new project 进行新脚本录制
 
 - 
- 输入新脚本的名称,点击ok
 
 - 
- 点击右上角的按钮 REC,开始录制
 
 - 
- 输入要打开网页地址,点击 start recording开始录制
 
 - 
- 自动打开网页后,开始网页操作
 
 - 
- 操作完成后,点击stop recording停止录制,输入脚本名称保存,即可在左侧列表中看到录制成功的脚本
 
 - 
- 点击倒三角的回放按钮,即可打开网页自动回放该脚本
 
 - 
- 录制了多个用例后,点击倒三角的 run all可执行所有已成功录制的脚本
 
 - 
- 点击脚本后的三个点,点击export可导出脚本,选择对应语言即可
 
 - 
- 将导出的py文件放pycharm,即可查看脚本内容
 
 - 
- 选择 test suites,然后把录制好的多个脚本都添加到 default suite中,然后可以一起导出
 
 - 
- 插件中可以给脚本中插入等待等操作,command
 
 
用例分析
用例结构
- 结构
- 用例标题
 - 前提条件
 - 用例步骤
 - 预期结果
 - 实际结果
 
 
| 用例标题 | 类型 | 前提条件 | 用例步骤 | 预期结果 | 实际结果 | 
|---|---|---|---|---|---|
| 搜狗搜索功能 | 正例 | 进入搜狗页面 | 1. 输入搜索关键词  2. 按下回车键  | 
1. 搜索成功  2. 搜索结果列表包含关键字  | 
- 用例结构对比
 
| 用例结构 | 自动化测试用例 | 作用 | 
|---|---|---|
| 用例标题 | 测试包、文件、类、方法名称 | 用例的唯一标识 | 
| 前提条件 | setup、setup_class (Pytest); BeforeEach、BeforeAll (JUnit)  | 
测试用例前的准备动作, 比如读取数据或者driver的初始化  | 
| 用例步骤 | 测试方法内的代码逻辑 | 测试用例具体的步骤行为 | 
| 预期结果 | assert 实际结果 = 预期结果 | 断言,印证用例是否执行成功 | 
| 实际结果 | assert 实际结果 = 预期结果 | 断言,印证用例是否执行成功 | 
| 后置动作 | teardown、teardown_class (Pytest); @AfterEach、@AfterAll (JUnit)  | 
脏数据清理、关闭 driver 进程 | 
录制用例分析
IDE 录制脚本
- 脚本步骤:
- 访问搜狗网站
 - 搜索框输入“霍格沃兹测试开发”
 - 点击搜索按钮
 
 - 脚本代码
 
# Generated by Selenium IDE 
import pytest 
import time 
import json 
from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.common.action_chains import ActionChains 
from selenium.webdriver.support import expected_conditions 
from selenium.webdriver.support.wait import WebDriverWait 
from selenium.webdriver.common.keys import Keys 
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities  
class Test():  
    def setup_method(self, method):     
        self.driver = webdriver.Chrome()  
        self.vars = {}   
        
    def teardown_method(self, method): 
        self.driver.quit()   
        
    def test_sougou(self):     
        # 打开网页,设置窗口  
        self.driver.get("https://www.sogou.com/")  
        self.driver.set_window_size(1235, 693)  
        # 输入搜索信息  
        self.driver.find_element(By.ID, "query").click()  
        self.driver.find_element(By.ID,"query").send_keys("霍格沃兹测试开发")  
        # 点击搜索  
        self.driver.find_element(By.ID, "stb").click()  
        element = self.driver.find_element(By.ID, "stb") 
        actions = ActionChains(self.driver)   
        actions.move_to_element(element).perform()
录制用例优化
- 增加断言信息,判断实际结果和预期结果是否一致
 
# Generated by Selenium IDE
import pytest
import time
import json
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
class TestDemo():  
    def setup_method(self, method):    
        self.driver = webdriver.Chrome()    
        self.vars = {}    
        
    def teardown_method(self, method):
        self.driver.quit()    
        
    def test_demo(self):    
        # 打开网页    
        self.driver.get("https://www.sogou.com/")    
        self.driver.set_window_size(1157, 895)    
        # 输入搜索信息    
        self.driver.find_element(By.ID, "query").click()    
        self.driver.find_element(By.ID, "query").send_keys("霍格沃兹测试开发")    
        # 点击搜索    
        self.driver.find_element(By.ID, "stb").click()    
        element = self.driver.find_element(By.ID, "stb")    
        actions = ActionChains(self.driver)    
        actions.move_to_element(element).perform()    
        # 增加断言    
        # 判断搜索结果列表是否包含 霍格沃兹   
        res_element = self.driver.find_element(By.CSS_SELECTOR, "#sogou_vr_30000000_0 
> em")    
        # 获取定位的文本信息    
        # 判断实际获取到的搜索框展示列表和预期是否一致    
        assert res_element.text == "霍格沃兹测试开发"