功能自动化

前提

  • 自动化的主要目的并不是为了找Bug,是为了证明功能可用
  • 不只是所有的功能都可以自动化,如UI
  • 并不是所有的项目都可以使用自动化,如selenium只能使用bs项目,小项目不适合使用自动化
  • 自动化在手动测试后
  • 在软件版本还没有稳定的情况下,千万不要开展自动化

自动化的局限性

  1. 定制性项目
  2. 周期很短的项目
  3. 人体感官与易用性测试
  4. 涉及物理交互
  5. 发现缺陷少
  6. 维护成本高
  7. 可能会制约软件开发
  8. 不能灵活处理意外

selenium

selenium: B/S软件功能自动化

IDE: 录制、回放【不会自动打开浏览器】

webdriver: 支持多语言的类库方法

Python 3.4 selenium:2.53.6 firefox: 46

IDE

1、 文件:创建、打开和保存测试案例和测试案例集。

    编辑:复制、粘贴、删除、撤销和选择测试案例中的所有命令。

    Options :用于设置seleniunm IDE。

2、用来填写被测网站的地址。

3、速度控制:控制案例的运行速度。

4、运行所有:运行一个测试案例集中的所有案例。

5、运行:运行当前选定的测试案例。

6、暂停/恢复:暂停和恢复测试案例执行。

7、单步:可以运行一个案例中的一行命令。

8、录制:点击之后,开始记录你对浏览器的操作。

9、案例集列表。

10、测试脚本;table标签:用表格形式展现命令及参数。source标签:用原始方式展现,默认是HTML语言格式,也可以用其他语言展示。

11、查看脚本运行通过/失败的个数。

12、当选中前命令对应参数。

13、日志/参考/UI元素/Rollup

webdriver

定位方式

id:html标签的id属性值

name:html标签的name属性值

CSS:css样式选择器 # id选择器

xpath:通过标签在html页面源码路径

绝对路径:/html/body/table/tr/td[2]/input

相对路径:.//input[@aa="abc"]

     .//标签名[@属性名="属性值"]

     .//*[@aa="abc"]

     .//*[@属性名="属性值"]

link:通过超链接标签内容

identifier:优先id的,如果没有再去找name的

js:dom=document.getElementById(“password”)

class:class=

dd=webdriver.Firefox() 打开浏览器

dd.get("url") :打开url对应页面

webdriver:

dd.find_element_by_id("html标签的id属性值")

dd.find_element_by_name("html标签的name属性值")

dd.find_element_by_css_selector("html标签的css样式选择器")

dd.find_element_by_xpath("html标签的xpath路径")

dd.find_element_by_link_text("超链接标签内容")

dd.find_element_by_tag_name("html标签名")

dd.find_element_by_class_name("html的class属性值")

操作:

文本框,密码框,文本域:

清空:dd.find_element_by_....(....).clear()

输入:dd.find_element_by_....(....).send_keys("输入内容")

单选按钮,复选框,超链接,按钮:

点击:dd.find_element_by_....(....).click()

下拉框:

选择:

Select(定位到的一个具体的下拉框).select_by_value("option的value属性值")

切焦点到frame/iframe:

dd.switch_to_frame("frame的id/name属性值")

dd.switch_to.frame("frame的id/name属性值")

当页面有刷新或者有跳转,需要加等待时间

time.sleep(数字秒)

最新文章

  1. BZOJ 2957 & 线段树上的查询
  2. android开发之单选按钮
  3. [原]SQLite的学习系列之获取数据库版本二
  4. 用Java实现单链表的基本操作
  5. SQL脚本循环修改数据库字段类型
  6. synergy在Windows和ubuntu 多台PC共享一套键盘鼠标
  7. Problem G: If We Were a Child Again
  8. zend framework 1.10项目配置与经典hello world
  9. swust oj 237
  10. 什么是混合app?
  11. epoll代码示例
  12. 【转】iOS 音频-AVAudioSession
  13. android app使用微信登录接口回调没有被执行的问题研究
  14. Windows----Github环境搭建
  15. rsync排除多个文件实现同步
  16. linux 变量定义
  17. C# 添加日志 log4net
  18. switchable图片切换
  19. 函数和常用模块【day06】:json模块(十一)
  20. Springboot 之 自定义配置文件及读取配置文件

热门文章

  1. Android 程序间的广播和Manifest找不到(解决方法)
  2. qt中使用dll库的方法
  3. 微信公众号怎么添加附件?比如word文档,pdf文件等
  4. C#LeetCode刷题-二叉搜索树
  5. C#LeetCode刷题之#561-数组拆分 I(Array Partition I)
  6. Mybatis-04-分页
  7. storcli 命令(更新Ing)
  8. Scala集合操作中的几种高阶函数
  9. Jmeter 常用函数(3)- 详解 __RandomString
  10. Jmeter 常用函数(24)- 详解 __digest