自动化脚本是什么?
自动化测试的概念有广义与狭义之分;广义上来讲所有借助工具来进行软件测试都可以称为自动化测
试;狭义上来讲,主要指基于 UI 层的自动化测试;除此之外还有基代码编写阶段的单元自动化测试,
基本集成测试阶段的接口自动化测试。
以下所说的“自动化测试”均指基于“UI 的功能自动化测试”,(UI测试:界面测试)
目前市面上的自动化测试工具非常多,下面几款是比较常见的自动化测试工具。
QTP
QTP 是 HP Quick Test Professional software 的简称,是一种企业级的自动测试工具。提供了强大
易用的录制回放功能。支持 B/S 与 C/S 两种架构的软件测试。是目前主流的自动化测试工具。
Robot Framework
Robot Framework 是一款 python 编写的功能自动化测试框架。具备良好的可扩展性,支持关键字驱动,
可以同时测试多种类型的客户端或者接口,可以进行分布式测试执行。
Watir 全称是“Web Application Testing in Ruby”。它是一种基于 Web 模式的自动化功能测试工具。
watir 是一个 ruby 语言库,使用 ruby 语言进行脚本开发。
selenium
Selenium 也是一个用于 Web 应用程序测试的工具,支持多平台、多浏览、多语言去实现自动化测试。
目前在 web 自动化领域应用越来越广泛。
当然,除了上面所列自动化测试工外,根据不同的应用还有很多商业的、开源的以及公司自己开发的
自动化测试工具。
watir
Watir 全称是“Web Application Testing in Ruby”。它是一种基于 Web 模式的自动化功能测试工具。
watir 是一个 ruby 语言库,使用 ruby 语言进行脚本开发。
什么是 selenium?
selenium 自动化测试浏览器,它主要是用于 Web 应用程序的自动化测试,但肯定不只局限于此,同
时支持所有基于 web 的管理任务自动化。
selenium 的特点:
开源,免费
多浏览器支持:FireFox、Chrome、IE、Opera
多平台支持:linux 、windows、MAC
多语言支持:java、python、ruby、php、C#、JavaScript
对 web 页面有良好的支持
简单(API 简单)、灵活(用开发语言驱动)
支持分布式测试用例执行
selenium 经历了两个版本,selenium 1.0 和 selenium 2.0 ,selenium 也不是简单一个工具,而
是由几个工具组成,每个工具都有其特点和应用场景。
另外selenium 有2个版本 第一个版本工具有:seleniumIDE,selenium Gird,seleniumRC
selenium IDE
selenium IDE 是嵌入到 Firefox 浏览器中的一个插件,实现简单的浏览器操作的录制与回放功能。
那么什么情况下用到它呢?
快速的创建 bug 重现脚本,在测试人员的测试过程中,发现了 bug 之后可以通过 IDE 将重现的步骤录
制下来,以帮助开发人员更容易的重现 bugi
另外IDE 还有一个特殊并且好用的功能:可以获取基本代码
IDE的使用方法和安装包地址
1.在下载完IDE包之后,直接讲文件丢在火狐浏览器即可
2.然后扔进去之后就会提示以下图片点击安装即可
编写自动化脚本
有了上面的环境,你一定很迫切想要编写并运行一个自动化脚本,下面就来体验一下 python 与
wegdriver 结合之后编写的脚本是多么简洁:
如果是 windows 用户,在开始菜单找到 python 目录,打开 IDLE(python GUI)程序,启动的是一个
交互模式。可以输入:from selenium import webdriver
上面的命令为导入 selenium 的相关包,如果回车后没有报错表示我们的 selenium 安装是成功的。
图 2.4
下面通选择菜单栏 File—>New Windows 或通过快捷键 Ctrl+N 打开新的窗口。
输入以下代码:
from selenium import webdriver
browser = webdriver.Firefox()
http://fnng.cnblogs.com 29
browser.get(“http://www.baidu.com”)
browser.find_element_by_id(“kw”).send_keys(“selenium”)
browser.find_element_by_id(“su”).click()
browser.quit()
输入完成后命令为 baidu.py 保存,按 F5 快捷键运行脚本,将看到脚本启动 Firefox 浏览器进入百度页,
输入“selenium” 点击搜索按钮,最后关闭浏览器的过程。(这里默认读者已经安装了 Firefox 浏览器)
我们后面的脚本也将会在这个编辑器下完成,在你还没找到更好的编辑器之前。
代码解析:
# coding = utf-8
为了防止乱码问题,以及方便的在程序中添加中文注释,把编码统一成 UTF-8。
from selenium import webdriver
导入 selenium 的 webdriver 包,只有导入 webdriver 包我们才能使用 webdriver API 进行自动化脚本
的开发。 import 所引入包,更专业的叫法为:模组(modules)
browser = webdriver.Firefox()
需要将控制的 webdriver 的 Firefox 赋值给 browser;获得了浏览器对象才可以启动浏览器,打开网
址,操作页面严肃,Firefox 是默认已经在 selenium webdriver 包里了,所以可以直接调用。当然也可
以调用 Ie 或 Chrome ,不过要先安装相关的浏览器驱动才行。
browser.get(“http://www.baidu.com”)
获得浏览器对象后,通过 get()方法,可以向浏览器发送网址。
browser.find_element_by_id(“kw”).send_keys(“selenium”)
关于页面元素的定位后面将会详细的介绍,这里通过 id=kw 定位到百度的输入框,并通过键盘方法
send_keys()向输入框里输入 selenium 。多自然语言呀!
browser.find_element_by_id(“su”).click()
这一步通过 id=su 定位的搜索按钮,并向按钮发送单击事件( click() )。
browser.quit()
退出并关闭窗口的每一个相关的驱动程序。
基操代码详解
脚本中的安装浏览器驱动
browser = webdriver.Firefox()
浏览器最大化
print “浏览器最大化”
driver.maximize_window() #将浏览器最大化显示 (driver则为一个类似变量名,给他设置一个名字)
driver.quit()#退出浏览器
我们在实际的测试工作中,有时候我们在测试时需要使用 tab 键将焦点转移到下一个元素,用于验
证元素的排序是否正确。webdriver 的 Keys()类提供键盘上所有按键的操作,甚至可以模拟一些组合建的
操作,如 Ctrl+A ,Ctrl+C/Ctrl+V 等。在某些更复杂的情况下,还会出现使用 send_keys 来模拟上下键
来操作下拉列表的情况。
#coding=utf-8
from selenium import webdriver
#引入 Keys 类包
from selenium.webdriver.common.keys import Keys
import time
driver = webdriver.Firefox()
driver.get(“http://www.baidu.com”)
#输入框输入内容
driver.find_element_by_id(“kw”).send_keys(“selenium”)
time.sleep(3)
#删除多输入的一个 m
driver.find_element_by_id(“kw”).send_keys(Keys.BACK_SPACE)
time.sleep(3)
#输入空格键+“教程”
driver.find_element_by_id(“kw”).send_keys(Keys.SPACE)
driver.find_element_by_id(“kw”).send_keys(u"教程")
time.sleep(3)
#ctrl+a 全选输入框内容
driver.find_element_by_id(“kw”).send_keys(Keys.CONTROL,‘a’)
#ctrl+x 剪切输入框内容
driver.find_element_by_id(“kw”).send_keys(Keys.CONTROL,‘x’)
time.sleep(3)
#输入框重新输入内容,搜索
driver.find_element_by_id(“kw”).send_keys(Keys.CONTROL,‘v’)
time.sleep(3)
#通过回车键盘来代替点击操作
driver.find_element_by_id(“su”).send_keys(Keys.ENTER)
time.sleep(3)
driver.quit() (注释:quiet 则是退出浏览器的意思)
#自动输入内容
boutter.find_element_by_id(“kw”),send_keys(“学霸哥哥”)
#自动进行点击
boutter.find_element_by_id(“su”),click()
查找Web页面的元素
查找元素流程:
1.首先打开浏览器输入查找内容。(任何浏览器都行,360,搜狐)
、
2.然后选择一个链接,右键点击并点击查看审查元素
3.选择元素
说到这里我就要讲一点:元素的分类
元素的分类
Web元素分为ID,name,class,tag,link,partial_link,xpath,CSS,一般在使用的时候如果找不到ID或者name,直接转换xpath或者CSS。
接下来就是一个完整的一个百度运行脚本的代码如下:
from selenium import webdriver #从selenium导入到webdriver
import time #导入时间元素工具
boutter - webdriver.Fivefox() #导入浏览器类型
boutter.get(“https://www.baidu.com”) #获取百度网址
boutter.find_element_by_id(“kw”),send_keys(“学霸哥哥”) #根据ID元素来进行查询,然后并输入“学霸哥哥”,"kw"是百度”ID“元素
time.sleep(2) #time则是在代码开头导入的时间,sleep则是在脚本运行查找时进行休息两秒,具体休息时间可以自己定)
boutter.find_element_by_id(“su”),click() #click是点击的意思,"su"则是百度最初始页面提交按钮的页面元素,根据ID来查找的
boutter.quiet() #退出环节
**虽然这些代码比较简单,别人的代码块都是直接导入的,但我自己还是毕竟喜欢手打,还是希望对于别人有所帮助,谢谢大家不喜勿喷,毕竟打字和截图不易 **