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

1. 什么是自动化测试?

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

2. 自动化测试金字塔

在这里插入图片描述

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等,方便掌握不同语言的测试人员操作。

火狐版:
在这里插入图片描述在这里插入图片描述在这里插入图片描述

6. Webdriver(浏览器驱动)

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

webdriver 运行原理:

  1. 启动浏览器,把浏览器绑定到特定的端口,形成一个 remote server
  2. 客户端(脚本)通过 commandExecutor 向 remote server 发送请求
  3. 把 web service 指令解析成浏览器的 native 指令,然后去操纵浏览器
    在这里插入图片描述

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()

在这里插入图片描述

6.2 元素的定位方式

常用的几种:

  1. id (如果元素有 id,肯定会是全局唯一的,可以直接定位元素)
    在这里插入图片描述

  2. name (如果有,必须是全局唯一的,才可以直接定位)
    在这里插入图片描述

  3. classname (一样的,不一定可以定位元素)
    在这里插入图片描述

  4. link text (适用于点击的链接)
    在这里插入图片描述

  5. partial link text (用部分链接的内容去定位元素)
    在这里插入图片描述

  6. tag name (组成元素的 tag,当然也要是页面唯一的)
    在这里插入图片描述

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

在这里插入图片描述

>
8. css selector (一定可以定位到该元素)
在这里插入图片描述

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

6.3 操作测试对象

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

在这里插入图片描述

  1. text (获取操作对象的文本内容)
    在这里插入图片描述

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 定位一组元素

有时候我们批量的操作对象,就像多选一样.
在这里插入图片描述

6.9 多层框架的操作

在这里插入图片描述

6.10 层级定位

就相当于鼠标放到位置后有一些选项,要定位就要先打开这个页面的层级
在这里插入图片描述

6.11 下拉框选择

在这里插入图片描述

6.12 alert 框的处理

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

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

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

6.13 div 对话框的处理

  1. 先定位到元素所在的 div
  2. 在去定位其他元素
    在这里插入图片描述

6.14 上传文件

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/chenbaifan/article/details/127159149