博客园—虫师
http://fnng.cnblogs.com
1
selenium webdriver (python)
(第三版)
声明:
本文档以收费方式出售,未经过作者本人允许,禁止一切非法的传播,禁止用于任何商
业用途。
博客园--虫师
fnngj@126.com
博客园—虫师
http://fnng.cnblogs.com
2
前言
对于大多软件测试人员来讲缺乏编程经验(指项目开发经验,大学的 C 语言算很基础
的编程知识)一直是难以逾越的鸿沟,并不是说测试比开发人员智商低,是国内的大多测试
岗位是功能测试为主,在工作时间中,我们很难深入的接触和使用编程技术;
笔者认为自动化测试尽管有很多不足,更不能完全替代手工测试,但确实是测试人员发
展的一个方向,越来越多的公司在实践自动化,越来多的项目在尝试自动化;所以对于功能
测试人员来讲,掌握项目自动化测试技术自然能提高测试技术水平,能够保持不被淘汰,又
能在激烈的竞争中处于优势地位。
为什么选 python,因为他语法简单;如果你有一点 C 语言或 java 语言基础的,将会非
常容易地学会并使用 python。自动化脚本本身要比开发程序简单得多,大多人学编程半途而
废就是没有实践的机会;那么通过 selenium webdriver python 进行自动化测试,很快就可以
学以致用,建立继续学习的信心与动力;可以平滑的过渡到真正的编程经验上。
如果要使用 java 或 ruby 语言通过 selenium webdriver 来实施自动化测试,虽然各种语
言的语法有差别,但思路是相通的;相信本文档依然可以提供给你学习的思路。
继续在这里感谢:
感谢购买第二版的同学,谢谢你们对本人劳动成果的支持!也正是你们时常问我还出不
出第三版了,也是你们的鼓励,让我继续学习整理本文档。
感谢乙醇前辈,第二版的文档是放在他的淘宝网站上卖的,感谢他的帮忙。
最最感谢的还是兔子( MarkRabbit ),好吧!他已经极力抗议叫兔子了,哈哈!本文
档中相当多的知识点是他提供的,不过他只提供思路,不提供解决问题的具体代码;我需要
把他的话截图下来,反复理解,然后找具体的解决代码,因此,我 python 的语言能力提高
了不少。
下面要简单说说本文档的内容:
《selenium webdriver python (第三版)》相比第二版增加测试套件,参数化问题,引入
HTMLTestRunner ,测试结构的调整,相对来说比较好的构建了测试结构(只能用是“结构”,
离“架构”还差得呢!)
本文档仍然有很多不足够,毕竟不是以出书的标准来要求的,可能很多知识点解释的不
透彻,甚至错误的地方,请提出你的意见给本人。
本文档不是 API,所以还有很多方法没有整理,如果在学习的过程中有任何疑问,请查
阅在线 AIP 文档:
http://selenium.googlecode.com/git/docs/api/py/index.html
2013.10.31
博客园—虫师
http://fnng.cnblogs.com
3
目录
一、selenium+python 环境搭建................................................................................................6
1.1 selenium 介绍............................................................................................................... 6
1.2 准备工作......................................................................................................................6
1.3 安装步骤......................................................................................................................7
1.4 安装 chrome driver...................................................................................................... 8
1.5 安装 IE driver................................................................................ 9
二、开始第一个脚本.................................................................................................................9
2.1 为什么选 python..........................................................................................................9
2.2 第一个脚本..................................................................................................................9
2.3 脚本解析....................................................................................................................10
三、元素的定位.......................................................................................................................11
3.1 id 和 name 定位.......................................................................................................12
3.2 tag name 和 class name 定位...................................................................................12
3.3 CSS 定位..................................................................................................................13
3.4 XPath 定位...............................................................................................................14
3.5 link 定位...................................................................................................................15
3.6 Partial link text 定位................................................................................................15
四、添加等待时间...................................................................................................................15
4.1、添加休眠..................................................................................................................15
4.2、智能等待..................................................................................................................16
五、打印信息...........................................................................................................................17
5.1、打印 tile....................................................................................................................17
5.2、打印 URL.................................................................................................................17
六、浏览器的操作...................................................................................................................18
6.1、浏览器最大化..........................................................................................................18
6.2、设置浏览器宽、高..................................................................................................19
七、操作浏览器的前进、后退...............................................................................................19
八、操作测试对象...................................................................................................................20
8.1、鼠标点击与键盘输入..............................................................................................21
8.2、submit 提交表单......................................................................................................21
8.3、text 获取元素文本...................................................................................................22
8.4、get_attribute 获得属性值........................................................................................ 22
九、键盘事件...........................................................................................................................23
9.1、键盘按键用法..........................................................................................................23
9.2、键盘组合键用法......................................................................................................24
9.3、中文乱码问题..........................................................................................................25
十、鼠标事件...........................................................................................................................25
10.1、鼠标右键................................................................................................................26
博客园—虫师
http://fnng.cnblogs.com
4
10.2、鼠标双击................................................................................................................27
10.3、鼠标拖放................................................................................................................27
十一、定位一组元素...............................................................................................................28
11.1、第一种定位方法....................................................................................................30
11.2、第二种定位方法....................................................................................................31
11.3、去掉最后一个勾选................................................................................................31
十二、多层框架/窗口定位......................................................................................................32
12.1、多层框架定位........................................................................................................32
12.2、多层窗口定位........................................................................................................35
十三、层级定位.......................................................................................................................35
十四、上传文件操作...............................................................................................................38
14.1、操作文件上传例子................................................................................................39
14.2、139 邮箱上传.........................................................................................................40
十五、下拉框处理...................................................................................................................41
15.1、操作下拉框例子....................................................................................................41
15.2、百度搜索设置下拉框操作....................................................................................43
十六、alert、confirm、prompt 的处理.................................................................................. 44
十七、对话框的处理...............................................................................................................45
17.1、div 对话框的处理..................................................................................................45
17.2、一般对话框的处理................................................................................................48
十八、调用 js........................................................................................................................... 49
18.1、通过 js 隐藏元素...................................................................................................49
18.2、通过 js 使输入框标红...........................................................................................51
十九、控制浏览器滚动条.......................................................................................................52
19.1、场景一....................................................................................................................53
19.2、场景二....................................................................................................................53
二十、cookie 处理................................................................................................................... 54
20.1、打印 cookie 信息...................................................................................................54
20.2、对 cookie 操作.......................................................................................................55
20.3、博客园登陆分析 cookie........................................................................................56
二十一、webdriver 原理解析................................................................................................. 57
二十二、引入 unittest 框架.....................................................................................................65
二十三、unittest 单元测试框架解析......................................................................................70
二十四、批量执行测试集.......................................................................................................75
二十五、异常捕捉与错误截图...............................................................................................77
二十六、生成测试报告(HTMLTestRunner).......................................................................... 80
二十七、数据驱动测试...........................................................................................................83
27.1、读取文件参数化....................................................................................................83
27.2、用户名密码的参数化(读取文件)................................................................... 85
27.3、用户名的参数化(字典)....................................................................................86
27.4、用户名密码的参数化(函数)........................................................................... 87
二十八、测试套件...................................................................................................................89
28.1、测试套件实例........................................................................................................89
28.2、整合 HTMLTestRunner 测试报告........................................................................ 93
博客园—虫师
http://fnng.cnblogs.com
5
28.3、更易读的报告........................................................................................................95
二十九、结构改进...................................................................................................................96
29.1、all_tests.py 移出来................................................................................................96
29.2、__init__.py 文件解析............................................................................................ 97
29.3、调用多级目录的用例............................................................................................98
29.4、改进用例的读取....................................................................................................99
29.5、进一步分离用例列表..........................................................................................101
三十、UliPad--python 开发利器...........................................................................................103