摘要:前言 之前我们简单讨论了手工测试用例与自动化测试用之间的差异,以及自动化测试用例设计时的注意事项,这一节就通过实例向读者介绍如何编写具体的自动化测试用例。 下面我以百度云盘为例: https://pan.baidu.com/ 百度云盘是百度的产品之一,为用户提供免费的在线空间,读者进入空间后可以将自
阅读全文
摘要:1. 前言 前面讲解了那么多selenium的基础知识,下面用一个简单案例来介绍,此案例主要实现,运行测试,自动生成html报告,并发生邮件。 2. 测试案例 2.1 目录结构介绍 conf:配置信息,目前只增加了邮箱配置相关信息,可以根据需要增加其他配置 data:测试数据,由于是简单介绍,暂空缺
阅读全文
摘要:前言 在脚本运行完成之后,除了在log.txt 文件看到运行日志外,我们更希望能生一张漂亮的测试报告来展示用例执行的结果。 HTMLTestRunner 是Python 标准库的unittest 模块的一个扩展。它生成易于使用的HTML 测试报告。HTMLTestRunner 是在BSD 许可证下发
阅读全文
摘要:前言 Webdriver 提供错误截图函数get_screenshot_as_file(),可以帮助我们跟踪bug,在脚本无法继续执行时候, get_screenshot_as_file()函数将截取当前页面的截图保存到指定的位置,这是一个非常棒的功能,下面实例展示get_screenshot_as
阅读全文
摘要:1.前言 WEB自动化测试时候测试哪些类型,下面将介绍一下: 2. 测试类型 2.1 测试静态内容 静态内容测试是最简单的测试,用于验证静态的、不变化的UI 元素的存在性。例如: 每个页面都有其预期的页面标题?这可以用来验证链接指向一个预期的页面; 应用程序的主页包含一个应该在页面顶部的图片吗? 网
阅读全文
摘要:1. 前言 手工测试用例是针对手工测试人员,自动化测试用例是针对自动化测试框架,前者是手工测试用例人员应用手工方式进行用例解析,后者是应用脚本技术进行用例解析,两者最大的各自特点在于,前者具有较好的异常处理能力,而且能够基于测试用例,制造各种不同的逻辑判断,而且人工测试步步跟踪,能够细致的定位问题。
阅读全文
摘要:前言 一个自动化测试框架就是一个集成体系,在这一体系中包含测试功能的函数库、测试数据源、测试对象识别标准,以及种可重用的模块。自动化测试框架在发展的过程中经历了几个阶段,模块驱动测试、数据驱动测试、对象驱动测试。本章就带领读者了解这几种测试模型 1. 自动化测试模型介绍 自动化测试模型是自动化测试架
阅读全文
摘要:场景 有时候我们需要验证浏览器中是否存在某个cookie,因为基于真实的cookie 的测试是无法通过白盒和集成测试完成的。webdriver 可以读取、添加和删除cookie 信息。webdriver 操作cookie 的方法有: get_cookies() 获得所有cookie 信息 get_c
阅读全文
摘要:场景 有时候web 页面上的元素并非直接可见的,就算把浏览器最大化,我们依然需要拖动滚动条才能看到想要操作的元素,这个时候就要控制页面滚动条的拖动,但滚动条并非页面上的元素,可以借助JavaScript是来完成操作。一般用到操作滚动条的会两个场景: 注册时的法律条文的阅读,判断用户是否阅读完成的标准
阅读全文
摘要:场景 webdriver 允许我们设置默认的文件下载路径。也就是说文件会自动下载并且存在设置的那个目录中,下面以firefox及chrome为例 代码 Firefox下载 为了让Firefox浏览器能实现文件下载,需要通过FirefoxProfile()对其做一些设置。 browser.downlo
阅读全文
摘要:场景 文件上传操作也比较常见功能之一,上传功能操作webdriver 并没有提供对应的方法,关键上传文件的思路。上传过程一般要打开一个系统的window 窗口,从窗口选择本地文件添加。所以,一般会卡在如何操作本地window 窗口。其实,上传本地文件没我们想的那么复杂;只要定位上传按钮,通send_
阅读全文
摘要:场景 我们在测试一个web 应用时,经常出现翻页的情况,下面介绍翻页场景 代码 遇到问题: selenium.common.exceptions.StaleElementReferenceException: Message: u'Element not found in the cache - p
阅读全文
摘要:场景 下拉框也是web 页面上非常常见的功能,webdriver 对于一般的下拉框处理起来也相当简单,要想定位下拉框中的内容,首先需要定位到下拉框;这样的二次定位 下拉框一般有以下两种方式: 鼠标移上去直接弹出的,那么我们可以使用move_to_element()进行操作,在上一章alert/con
阅读全文
摘要:场景 webdriver 中处理JavaScript 所生成的alert、confirm 以及prompt 是很简单的。具体思路是使用switch_to.alert()方法定位到alert/confirm/prompt。然后使用text/accept/dismiss/send_keys 按需进行操做
阅读全文
摘要:场景 有时候我们在测试一个web 应用时会出现多个浏览器窗口的情况,在selenium1.0 中这个问题比较难处理。webdriver 提供了相关相方法可以很轻松的在多个窗口之间切换并操作不同窗口上的元素 代码 运行结果:
阅读全文
摘要:场景 页面上弹出的对话框是自动化测试经常会遇到的一个问题;很多情况下对话框是一个iframe,如之前iframe介绍的例子,处理起来稍微有点麻烦;但现在很多前端框架的对话框是div 形式的,这就让我们的处理变得十分简单。 代码 备注: 定位元素可以使用等待时间的方法,上面代码可自行修改
阅读全文
摘要:场景 在web 应用中经常会出现frame 嵌套的应用,假设页面上有A、B 两个frame,其中B 在A 内,那么定位B 中的内容则需要先到A,然后再到B。 switch_to_frame 方法可以把当前定位的主体切换了frame 里。怎么理解这句话呢?我们可以从frame的实质去理解。frame
阅读全文
摘要:场景 sleep():设置固定休眠时间。python 的time 包提供了休眠方法sleep() ,导入time 包后就可以使用sleep()进行脚本的执行过程进行休眠。implicitly_wait():是webdirver 提供的一个超时等待。隐的等待一个元素被发现,或一个命令完成。如果超出了设
阅读全文
摘要:场景 我们在实际的测试工作中,有时候需要使用tab键将焦点移动到下一个元素,用于验证元素的排序是否正确。webdriver的Keys()类提供键盘上所有的操作,甚至可以模拟一些组合键的操作,如Ctrl+A,Ctrl+C/Ctrl+V等,在某些更复杂的情况下,还会出现使用send_keys()来模拟上
阅读全文
摘要:场景 前景讲解了鼠标的click()事件,而我们在实际的web产品测试中,有关鼠标的操作,不仅仅只有单击,有时候还包括右击,双击,拖动等操作,这些操作包含在ActionChains类中。 ActionChains类鼠标操作的常用方法: context_click() 右击 double_click(
阅读全文