软件测试 - 自动化测试工具 selenium1

  • 1. 什么是自动化测试?
  • 2. 自动化测试金字塔
    • 2.1 单元测试
    • 2.2 接口测试
    • 2.3 UI 自动化测试
  • 3. 为什么要使用 selenium 自动化框架
  • 4. 什么样的项目适合自动化测试
  • 5. Selenium IDE
  • 6. Webdriver(浏览器驱动)
    • 6.1 webdriver API
    • 6.2 元素的定位方式
    • 6.3 操作测试对象
    • 6.3 添加等待
    • 6.4 打印信息
    • 6.5 浏览器操作
    • 6.6 键盘事件
    • 6.7 鼠标事件
    • 6.8 定位一组元素
    • 6.9 多层框架的操作
    • 6.10 层级定位
    • 6.11 下拉框选择
    • 6.12 alert 框的处理
    • 6.13 div 对话框的处理
    • 6.14 上传文件

1. 什么是自动化测试?

说白了,就是"机器"去帮我们执行了.他按照预先设定好的条件去运行,设定的条件包括正常条件异常条件,不需要人为手工干涉去进行测试过程,就通过脚本去设定.

2. 自动化测试金字塔

软件测试 - 自动化测试工具 selenium1_第1张图片

2.1 单元测试

对程序组成的最小单位进行测试,效率很高,我们测试/开发要把大部分精力放在单元测试阶段.(Java 中的 Junit 框架就是单元测试)

2.2 接口测试

接口测试就是 API 测试,相对于 UI 自动化 API 自动化更加容易实现,执行起来也更稳定. 在项目前期,接口开发完成之后就进行测试.他的测试用例维护量少,适合接口变动小的项目(接口自动化工具: robotframework 框架 , jmeter , postman , Django , soupUI 语言 : Java/Python)

2.3 UI 自动化测试

根据界面元素,对元素进行操作,模拟用户的使用,编写自动化脚本,进行测试. 缺点就是用例维护量大,优点就是可以支持繁琐复杂,手工不易操作,反复执行的功能测试.需要在项目后期,界面功能和界面元素稳定的时候进行,适合界面比较稳定的项目

UI 自动化的好处:

  1. 进行大量的回归测试和兼容性测试,解放双手,提高效率,节省资源
  2. 建立一个稳定的测试过程,减少人为错误
  3. 完成对手工测试来说比较有难度的测试
  4. 完成对手工来说比较繁琐的测试
  5. 机器执行是很可靠的
  6. 脚本是可以复用的

3. 为什么要使用 selenium 自动化框架

首先,自动化测试工具是有很多的,像: jmeter , testNG , Django , Appium , Macaca 都是.看自己.

selenium 特点: 轻量级 , 安装方便 , 免费 , 支持多种语言 (Java , Python , ruby , C# , JavaScript) , 支持多个平台 , 支持操作系统 (Linux , Windows , Mac) , 支持多浏览器 (Firefox , Chrome , Opera , Safari)

4. 什么样的项目适合自动化测试

产品型的项目(一些回归测试) , 产品需要不停迭代 , 周期很长 , 项目稳定 , 界面不频繁变动

而不适合的:

  1. 需求变动频繁的项目,自动化脚本不能重复使用,维护成本太大,性价比低
  2. 项目周期短,自动化脚本编制完成后使用次数不多,性价比低
  3. 交互型较强的项目,需要人工干预的项目,自动化无法实施

5. Selenium IDE

Selenium IDE一个用于Selenium测试的完成集成开发环境,可以直接录制在浏览器的用户操作,并且能回放,编辑和调试测试脚本。调试过程中可以逐步进行或调整执行的速度,并且可以在底部浏览日志出错信息。

录制的测试脚本可以以多种语言导出,比如java,C#,Python,Ruby等,方便掌握不同语言的测试人员操作。

火狐版:
软件测试 - 自动化测试工具 selenium1_第2张图片软件测试 - 自动化测试工具 selenium1_第3张图片软件测试 - 自动化测试工具 selenium1_第4张图片

6. Webdriver(浏览器驱动)

webdriver 解决了 selenium RC 的环境沙箱问题

webdriver 运行原理:

  1. 启动浏览器,把浏览器绑定到特定的端口,形成一个 remote server
  2. 客户端(脚本)通过 commandExecutor 向 remote server 发送请求
  3. 把 web service 指令解析成浏览器的 native 指令,然后去操纵浏览器
    软件测试 - 自动化测试工具 selenium1_第5张图片

6.1 webdriver API

# coding = utf-8
from selenium import webdriver
import time
browser = webdriver.Firefox()
time.sleep(3)
browser.get("http://www.baidu.com")
time.sleep(3)
browser.find_element_by_id("kw").send_keys("selenium")
time.sleep(3)
browser.find_element_by_id("su").click()
browser.quit()

软件测试 - 自动化测试工具 selenium1_第6张图片

6.2 元素的定位方式

常用的几种:

  1. id (如果元素有 id,肯定会是全局唯一的,可以直接定位元素)
    软件测试 - 自动化测试工具 selenium1_第7张图片

  2. name (如果有,必须是全局唯一的,才可以直接定位)
    软件测试 - 自动化测试工具 selenium1_第8张图片

  3. classname (一样的,不一定可以定位元素)
    软件测试 - 自动化测试工具 selenium1_第9张图片

  4. link text (适用于点击的链接)
    软件测试 - 自动化测试工具 selenium1_第10张图片

  5. partial link text (用部分链接的内容去定位元素)
    软件测试 - 自动化测试工具 selenium1_第11张图片

  6. tag name (组成元素的 tag,当然也要是页面唯一的)
    软件测试 - 自动化测试工具 selenium1_第12张图片

  7. xpath (一定可以定位到该元素,每一个元素的 xpath 都是唯一的)

软件测试 - 自动化测试工具 selenium1_第13张图片


8. css selector (一定可以定位到该元素)
软件测试 - 自动化测试工具 selenium1_第14张图片

像这些只要打开页面开发者工具都是可以获取到这些属性的

6.3 操作测试对象

  1. click (点击操作对象)
  2. send_keys (给操作对象输入文本信息)
  3. submit (提交订单)
  4. clear (清除操作对象的内容)

软件测试 - 自动化测试工具 selenium1_第15张图片

  1. text (获取操作对象的文本内容)
    软件测试 - 自动化测试工具 selenium1_第16张图片

6.3 添加等待

  1. time.sleep() (固定等待)
  2. driver.implicity_wait() (智能等待 , 等待并非一个固定的等待时间,当脚本执行到某个元素定位时,如果元素可以定位,则继续执行;如果元素定位不到,则它以轮询的方式不断的判断元素是否被定位到。直到超出设置的时长)

6.4 打印信息

  1. driver.title (获得title)
  2. driver.url (获得 URL)

6.5 浏览器操作

  1. maximize_window() (浏览器的放大,最大化)
  2. set_window_size() (设置浏览器的宽和高)
  3. driver.forward() (浏览器的前进)
  4. driver.back() (浏览器的后退)
  5. document.documentElement.scrollTop=10000 (将浏览器滚动条滑到最底端)
  6. document.documentElement.scrollTop=0 (将浏览器滚动条滑到最顶端)

6.6 键盘事件

必须引入工具包: from selenium.webdriver.common.keys import Keys

通过send_keys()调用按键:

  1. send_keys(Keys.TAB) # TAB
  2. send_keys(Keys.ENTER) # 回车
  3. send_keys(Keys.SPACE) #空格键
  4. send_keys(Keys.ESCAPE) #回退键(Esc)

键盘组合键用法:
5. send_keys(Keys.CONTROL,‘a’) #全选(Ctrl+A)
6. send_keys(Keys.CONTROL,‘c’) #复制(Ctrl+C)
7. send_keys(Keys.CONTROL,‘x’) #剪贴(Ctrl+X)
8. send_keys(Keys.CONTROL,‘v’) #粘贴(Ctrl+V)

6.7 鼠标事件

要使用鼠标事件需要导入工具包:
from selenium.webdriver.common.action_chains import ActionChains

#鼠标拖动事件
ActionChains(driver).move_to_element(element).perform()

ActionChains(driver)
生成用户的行为。所有的行动都存储在actionchains 对象。通过perform()存储的行为。

move_to_element(element)
移动鼠标到一个元素中,menu 上面已经定义了他所指向的哪一个元素

perform()
执行所有存储的行为

ActionChains 类

  1. context_click() 右击
  2. double_click() 双击
  3. drag_and_drop() 拖动
  4. move_to_element() 移动

6.8 定位一组元素

有时候我们批量的操作对象,就像多选一样.
软件测试 - 自动化测试工具 selenium1_第17张图片

6.9 多层框架的操作

软件测试 - 自动化测试工具 selenium1_第18张图片

6.10 层级定位

就相当于鼠标放到位置后有一些选项,要定位就要先打开这个页面的层级
软件测试 - 自动化测试工具 selenium1_第19张图片

6.11 下拉框选择

软件测试 - 自动化测试工具 selenium1_第20张图片

6.12 alert 框的处理

  1. 获得弹框的操作句柄
    在这里插入图片描述

  2. 调用 accept 方法关闭弹框
    在这里插入图片描述

  3. 如何向 alert 框中输入信息
    在这里插入图片描述

6.13 div 对话框的处理

  1. 先定位到元素所在的 div
  2. 在去定位其他元素
    软件测试 - 自动化测试工具 selenium1_第21张图片

6.14 上传文件

在这里插入图片描述

你可能感兴趣的:(软件测试,自动化,测试工具,运维)