logo资料库

SELENIUM测试自动化框架.pdf

第1页 / 共58页
第2页 / 共58页
第3页 / 共58页
第4页 / 共58页
第5页 / 共58页
第6页 / 共58页
第7页 / 共58页
第8页 / 共58页
资料共58页,剩余部分请下载后查看
修订历史记录
目 录
1. Selenium 相关
1.1. Selenium简介
1.2. 名词解释
1.3. 相关资源
2. Selenium WebDriver使用介绍
2.1. WD对浏览器的简单操作
2.1.1. 打开一个浏览器
2.1.2. 打开一个具体的url
2.1.3. 浏览器导航
2.1.4. 关闭浏览器
2.1.5. 返回当前页面的Url和Title
2.1.6. 其他常见方法
2.2. WD定位页面元素
2.2.1. 定位单个元素
2.2.2. 定位多个元素
2.2.3. 层级定位
2.2.4. Xpath定位器
2.2.5. CssSelector定位器
2.3. 页面元素的操作
2.3.1. 输入框(text field or textarea)
2.3.2. 下拉选择框(Select)
2.3.3. 单选项(Radio Button)
2.3.4. 多选项(Checkbox)
2.3.5. 按钮(Button)
2.3.6. 左右选择框
2.3.7. 弹出对话框(Popup dialogs)
2.3.8. 表单(Form)
2.3.9. 上传文件 (Upload File)
2.3.10. 拖拉(Drag andDrop)
2.3.11. 鼠标悬停(Mouse MoveOn)
2.4. 常见的特殊情况处理
2.4.1. iframe的处理
2.4.2. 弹出窗口的处理
2.4.3. 处理对话框alert\confirm\prompt
2.4.4. 表格的处理
2.4.5. 富文本编辑器
2.5. 高级应用
2.5.1. 操作cookies
2.5.2. 等待页面元素加载完成
2.5.3. 页面截图
2.6. JavaScript
2.6.1. DOM简介
2.6.2. DOM HTML
2.6.3. DOM CSS
2.6.4. Selenium脚本中执行JS脚本
2.7. 重用与封装
2.7.1. 判断元素是否存在
2.7.2. 获得元素的文本内容
2.7.3. 点击包含特定文本的元素
2.7.4. 获取元素所指向的Url
2.7.5. 文本框赋值
2.8. 模拟鼠标和键盘的操作
2.8.1. 单一的操作
2.8.2. 组合的操作
2.8.3. 常用键盘事件
2.9. 各浏览器驱动配置
2.9.1. FireFox
2.9.2. IE
2.9.3. Google Chrome
2.10. 常见异常的处理方式
3. Testng使用介绍
3.1. Annotation(注解)
3.2. Assert(断言)
3.3. testng.xml
3.4. 运行Testng
3.4.1. Eclipse
3.4.2. Ant
3.4.3. 命令行
3.5. 运行结果
3.6. ReRun failed tests
3.7. dataProvider(数据驱动)
4. Testfan高级代码框架介绍
4.1. src(源代码)
4.1.1. com.control
4.1.2. com.config
4.1.3. com.util
4.1.4. com.page
4.1.5. com.business
4.1.6. com.case
4.1.7. com.data
4.2. external jars(外部jar包)
4.3. conf(配置文件)
4.3.1. env.properties
4.3.2. log4j.properties(日志配置)
4.4. dbbackup(数据库备份文件)
4.5. logs(日志文件)
4.6. report(测试结果)
4.7. report2(测试结果2)
4.8. res(资源文件)
4.9. screenshot(屏幕截图)
4.10. test-output(测试结果)
4.11. testdata(测试数据)
4.12. build.xml(ant)
4.13. testng.xml
4.14. Testfan高级代码框架特性
4.14.1. Multiply Browser(多浏览器支持)
4.14.2. Case Managemen(测试用例管理)
4.14.3. Data Drive Test(数据驱动测试)
4.14.4. Object Repository(对象仓库,页面对象)
4.14.5. Assert(断言,验证点)
4.14.6. DatabaseService(数据库服务)
4.14.7. Integration(持续集成)
4.14.8. Auto Report(自动生成测试报告)
4.14.9. Auto Screenshot(自动截图处理)
4.14.10. Logs(本地化日志处理)
4.14.11. Scheduled Task(定时任务处理)
4.14.12. Re-Running failed tests(重运行失败的用例)
4.14.13. Recovery Scenarios(场景恢复)
5. 自动运行环境搭建
5.1. 版本管理服务器SVN
5.1.1. Eclipse SVN插件
5.1.2. 安装服务端
5.1.3. 安装客户端
5.1.4. 创建版本控制库
5.1.5. 配置版本库
5.1.6. 导入托管文件
5.1.7. 配置svnservice服务
5.1.8. 启动svnservice服务
5.1.9. 测试服务
5.2. CI服务-Jenkins
5.2.1. 启动Jenkins
5.2.2. 系统配置
5.2.3. 安装插件
5.2.4. 构建项目环境
5.2.5. 邮件通知设置
5.2.6. 构建任务
5.2.7. 构建结果
5.2.8. 控制台日志输出乱码
5.2.9. 测试报告发布失败
5.3. 分布式解决方案
5.3.1. Jenkins Slave
5.3.2. Selenium Grid(Hub/Node)
Selenium 2 (SeleniumAutoTestFramework) 功能自动化测试框架培训手册
修 订 历 史 记 录 备注(说明修改原因、内容、审核结论等) 日期 2013-05-18 文档编制 2014-03-11 加入复合 class 的定位方式、富文本框的处理 2015-07-24 完善 CSS 定位方式 2016-02-02 升级版本和部分截图 2016-3-9 完善 xpath 定位,调整 css 定位 更新 JavaScript 部分 2016-5-26 2016-06-02 完善 jenkins 常见异常情况处理 2016-06-08 完善 jenkins 构建过程和结果 版本 V1.0.0 V1.0.1 V1.1.0 V2.0 V2.1 V2.2 V2.2.1 V2.2.2 责任人
Selenium 培训手册 目 录 修订历史记录 ......................................................................................................................................................... 2 目 录 ................................................................................................................................................................. I 1. SELENIUM 相关 ......................................................................................................................................... 1 1.1. SELENIUM简介 .............................................................................................................................................. 1 1.2. 名词解释 ................................................................................................................................................... 1 1.3. 相关资源 ................................................................................................................................................... 1 2. SELENIUM WEBDRIVER 使用介绍 .............................................................................................................. 2 2.1. WD对浏览器的简单操作 ............................................................................................................................ 2 2.1.1. 打开一个浏览器 ............................................................................................................................ 2 2.1.2. 打开一个具体的url ...................................................................................................................... 2 2.1.3. 浏览器导航 .................................................................................................................................... 2 2.1.4. 关闭浏览器 .................................................................................................................................... 3 2.1.5. 返回当前页面的Url和Title ........................................................................................................ 3 2.1.6. 其他常见方法 ................................................................................................................................ 3 2.2. WD定位页面元素........................................................................................................................................ 3 2.2.1. 定位单个元素 ................................................................................................................................ 3 2.2.2. 定位多个元素 ................................................................................................................................ 4 2.2.3. 层级定位 ........................................................................................................................................ 4 2.2.4. Xpath定位器 .................................................................................................................................. 5 2.2.5. CssSelector定位器 ...................................................................................................................... 5 2.3. 页面元素的操作........................................................................................................................................ 6 2.3.1. 输入框(text field or textarea)......................................................................................... 6 2.3.2. 下拉选择框(Select) .................................................................................................................... 6 2.3.3. 单选项(Radio Button) ................................................................................................................ 6 2.3.4. 多选项(Checkbox) ........................................................................................................................ 7 2.3.5. 按钮(Button) ................................................................................................................................ 7 2.3.6. 左右选择框 .................................................................................................................................... 7 2.3.7. 弹出对话框(Popup dialogs) ...................................................................................................... 7 2.3.8. 表单(Form) .................................................................................................................................... 7 2.3.9. 上传文件 (Upload File) ............................................................................................................ 8 2.3.10. 拖拉(Drag andDrop) .................................................................................................................... 8 2.3.11. 鼠标悬停(Mouse MoveOn) ............................................................................................................ 8 2.4. 常见的特殊情况处理 ................................................................................................................................ 8 2.4.1. iframe的处理 ................................................................................................................................ 8 2.4.2. 弹出窗口的处理 ............................................................................................................................ 8 2.4.3. 处理对话框alert\confirm\prompt .......................................................................................... 10 2.4.4. 表格的处理 .................................................................................................................................. 10 2.4.5. 富文本编辑器 .............................................................................................................................. 13 2.5. 高级应用 ................................................................................................................................................. 13 2.5.1. 操作cookies ................................................................................................................................ 13 2.5.2. 等待页面元素加载完成 .............................................................................................................. 13 2.5.3. 页面截图 ...................................................................................................................................... 14 2.6. JAVASCRIPT ................................................................................................................................................. 15 2.6.1. DOM简介 ........................................................................................................................................ 15 Selenium 自动化测试培训 QQ: 2197736050 www.testfan.cn i
Selenium 培训手册 2.6.2. DOM HTML ...................................................................................................................................... 16 2.6.3. DOM CSS ........................................................................................................................................ 16 2.6.4. Selenium脚本中执行JS脚本 ...................................................................................................... 16 2.7. 重用与封装 ............................................................................................................................................. 17 2.7.1. 判断元素是否存在 ...................................................................................................................... 17 2.7.2. 获得元素的文本内容 .................................................................................................................. 18 2.7.3. 点击包含特定文本的元素 .......................................................................................................... 18 2.7.4. 获取元素所指向的Url ................................................................................................................ 18 2.7.5. 文本框赋值 .................................................................................................................................. 19 2.8. 模拟鼠标和键盘的操作 .......................................................................................................................... 19 2.8.1. 单一的操作 .................................................................................................................................. 19 2.8.2. 组合的操作 .................................................................................................................................. 20 2.8.3. 常用键盘事件 .............................................................................................................................. 20 2.9. 各浏览器驱动配置.................................................................................................................................. 20 2.9.1. FireFox ........................................................................................................................................ 20 2.9.2. IE .................................................................................................................................................. 20 2.9.3. Google Chrome ............................................................................................................................ 20 2.10. 常见异常的处理方式 ......................................................................................................................... 21 3. TESTNG 使用介绍 .................................................................................................................................... 23 3.1. ANNOTATION(注解) ................................................................................................................................. 23 3.2. ASSERT(断言) ....................................................................................................................................... 24 3.3. TESTNG.XML ................................................................................................................................................. 26 3.4. 运行TESTNG ............................................................................................................................................... 28 3.4.1. Eclipse ........................................................................................................................................ 28 3.4.2. Ant ................................................................................................................................................ 28 3.4.3. 命令行 .......................................................................................................................................... 28 3.5. 运行结果 ................................................................................................................................................. 29 3.6. RERUN FAILED TESTS .................................................................................................................................... 29 3.7. DATAPROVIDER(数据驱动) ...................................................................................................................... 29 4. TESTFAN 高级代码框架介绍 .................................................................................................................. 30 4.1. SRC(源代码) ......................................................................................................................................... 30 4.1.1. com.control ................................................................................................................................ 30 4.1.2. com.config .................................................................................................................................. 31 4.1.3. com.util ...................................................................................................................................... 31 4.1.4. com.page ...................................................................................................................................... 32 4.1.5. com.business .............................................................................................................................. 32 4.1.6. com.case ...................................................................................................................................... 32 4.1.7. com.data ...................................................................................................................................... 32 4.2. EXTERNAL JARS(外部JAR包) .................................................................................................................... 33 4.3. CONF(配置文件) ................................................................................................................................... 33 4.3.1. env.properties .......................................................................................................................... 33 4.3.2. log4j.properties(日志配置) .............................................................................................. 33 4.4. DBBACKUP(数据库备份文件) ................................................................................................................. 34 4.5. LOGS(日志文件) ................................................................................................................................... 34 4.6. REPORT(测试结果) ................................................................................................................................ 34 4.7. REPORT2(测试结果 2) ........................................................................................................................... 34 Selenium 自动化测试培训 QQ: 2197736050 www.testfan.cn ii
Selenium 培训手册 4.8. RES(资源文件) ..................................................................................................................................... 34 4.9. SCREENSHOT(屏幕截图) .......................................................................................................................... 34 4.10. TEST-OUTPUT(测试结果) ................................................................................................................... 34 4.11. TESTDATA(测试数据) ......................................................................................................................... 34 4.12. BUILD.XML(ANT) .................................................................................................................................. 34 4.13. TESTNG.XML ............................................................................................................................................. 34 4.14. TESTFAN高级代码框架特性 .................................................................................................................. 34 4.14.1. Multiply Browser(多浏览器支持)....................................................................................... 34 4.14.2. Case Managemen(测试用例管理) .......................................................................................... 35 4.14.3. Data Drive Test(数据驱动测试)......................................................................................... 36 4.14.4. Object Repository(对象仓库,页面对象) ......................................................................... 37 4.14.5. Assert(断言,验证点) .......................................................................................................... 37 4.14.6. DatabaseService(数据库服务) ............................................................................................ 37 4.14.7. Integration(持续集成) ........................................................................................................ 37 4.14.8. Auto Report(自动生成测试报告)......................................................................................... 37 4.14.9. Auto Screenshot(自动截图处理)......................................................................................... 38 Logs(本地化日志处理) .................................................................................................. 38 4.14.10. 4.14.11. Scheduled Task(定时任务处理) .................................................................................. 38 Re-Running failed tests(重运行失败的用例) ........................................................ 38 4.14.12. 4.14.13. Recovery Scenarios(场景恢复) .................................................................................. 39 5. 自动运行环境搭建 ................................................................................................................................. 40 5.1. 版本管理服务器SVN ................................................................................................................................ 40 5.1.1. Eclipse SVN插件 ........................................................................................................................ 40 5.1.2. 安装服务端 .................................................................................................................................. 40 5.1.3. 安装客户端 .................................................................................................................................. 40 5.1.4. 创建版本控制库 .......................................................................................................................... 40 5.1.5. 配置版本库 .................................................................................................................................. 40 5.1.6. 导入托管文件 .............................................................................................................................. 40 5.1.7. 配置svnservice服务 .................................................................................................................. 40 5.1.8. 启动svnservice服务 .................................................................................................................. 41 5.1.9. 测试服务 ...................................................................................................................................... 41 5.2. CI服务-JENKINS ........................................................................................................................................ 41 5.2.1. 启动Jenkins ................................................................................................................................ 41 5.2.2. 系统配置 ...................................................................................................................................... 41 5.2.3. 安装插件 ...................................................................................................................................... 42 5.2.4. 构建项目环境 .............................................................................................................................. 43 5.2.5. 邮件通知设置 .............................................................................................................................. 45 5.2.6. 构建任务 ...................................................................................................................................... 45 5.2.7. 构建结果 ...................................................................................................................................... 46 5.2.8. 控制台日志输出乱码 .................................................................................................................. 46 5.2.9. 测试报告发布失败 ...................................................................................................................... 46 5.3. 分布式解决方案...................................................................................................................................... 46 5.3.1. Jenkins Slave ............................................................................................................................ 46 5.3.2. Selenium Grid(Hub/Node) ........................................................................................................ 49 Selenium 自动化测试培训 QQ: 2197736050 www.testfan.cn iii
Selenium 培训手册 1. Selenium 相关 1.1. Selenium简介 Selenium 是 ThroughtWorks 公 司 一 个 强 大 的 开 源 Web 功 能 测 试 工 具 系 列 , 包 括 Selenium-IDE、 Selenium-RC、 Selenium-Webdriver 以 及 Selenium-Grid。 在 本 自 动 化 测 试 框 架 中 我 们 可 以 灵 活 组 合 应 用 到 其 中 的 Selenium-IDE、 Selenium-Webdriver。 1. Selenium Core: 支 持 DHTML 的 测 试 案 例 ( 效 果 类 似 数 据 驱 动 测 试 ) , 它 是 Selenium IDE 和 Selenium RC 的 引 擎 。 2. Selenium IDE: FireFox 的 一 个 插 件 , 支 持 脚 本 录 制 。 3. Selenium RC: Selenium Remote Control。 Selenium 的 1.x 版 本 4. Selenium WD: Selenium WebDriver。 后 续 内 容 主 要 针 对 Selenium WebDriver 进 行 介 绍 5. Selenium Grid: 允 许 同 时 并 行 地 、 在 不 同 的 环 境 上 运 行 多 个 测 试 任 务 , 极 大 地 加 快 Web 应 用 的 功 能 测 试 。 Selenium 2.0 的 主 要 新 功 能 是 集 成 了 Webdriver 的 API。 Webdriver 的 设 计 提 供 一 个 更 简 单 、 更 简 洁 的 编 程 接 口 以 及 解 决 的 Selenium-RC API 中 的 一 些 限 制 。 Selenium- Webdriver 的 开 发 是 为 了 更 好 地 支 持 动 态 网 页 的 页 面 元 素 可 能 已 经 更 改 , 但 本 身 不 被 重 新 加 载 的 页 面 。 Webdriver 的 目 标 是 提 供 一 个 设 计 良 好 的 面 向 对 象 的 API、 提 供 更 好 的 支 持 , 为 Web 应 用 程 序 测 试 问 题 。 1.2. 名词解释 WD : Selenium WebDriver SATF : SeleniumAutoTestFramework 1.3. 相关资源 Selenium官方网站:http://docs.seleniumhq.org/ 最新的jar包下载:http://docs.seleniumhq.org/download/ 在线API查询:http://selenium.googlecode.com/git/docs/api/java/index.html ChromeDriver下载:http://chromedriver.storage.googleapis.com/index.html TestNg插件地址:http://beust.com/eclipse TestNg使用介绍:http://testng.org/doc/documentation-main.html Selenium 自动化测试培训 QQ: 2197736050 www.testfan.cn 1
Selenium 培训手册 2. Selenium WebDriver使用介绍 2.1. WD对浏览器的简单操作 2.1.1. 打开一个浏览器 WebDriver diver = new FirefoxDriver(); //初始化一个火狐浏览器 WebDriver diver = new InternetExplorerDriver(); //初始化一个IE浏览器 WebDriver diver = new ChromeDriver(); //初始化一个chrome浏览器 小技巧  非默认安装的火狐浏览器怎么处理? //打开指定路径的firefox,方法1 System.setProperty("webdriver.firefox.bin","D:\\Program Files\\Mozilla Firefox\\firefox.exe"); //打开指定路径的firefox,方法2(构造方法) File pathToFirefoxBinary = new File("D:\\Program Files\\Mozilla Firefox\\firefox.exe"); FirefoxBinary firefoxbin = new FirefoxBinary(pathToFirefoxBinary); driver = new FirefoxDriver(firefoxbin,null);  启动特定Profile 的火狐浏览器(含插件)?--(构造方法) FirefoxProfile profile = new FirefoxProfile(new File( "\\Firefox\\Profiles\\*******.default")); driver = new FirefoxDriver(profile); 2.1.2. 打开一个具体的 url String url = "http://www.baidu.com"; //定义一个变量,并赋值 下面两个方法都可以实现打开url的效果 driver.get(url); driver.navigate().to(url); 2.1.3. 浏览器导航 不常用 driver.navigate().back();//向前 driver.navigate().forward ();//向后 driver.navigate().refresh();//当前页刷新 driver.manage().window().maximize();//浏览器窗口最大化 Selenium 自动化测试培训 QQ: 2197736050 www.testfan.cn 2
Selenium 培训手册 2.1.4. 关闭浏览器 //关闭当前页面 driver.close(); //关闭由selenium所启动的所有页面 driver.quit(); 2.1.5. 返回当前页面的 Url 和 Title String title = driver.getTitle(); //返回当前页面的Ttile String currentUrl = driver.getCurrentUrl(); //返回当前页面的url 2.1.6. 其他常见方法 getWindowHandle() //返回当前的浏览器的窗口句柄 getWindowHandles() //返回当前的浏览器的所有窗口句柄 getPageSource() //返回当前页面的源码 拓展知识:操作浏览器的主要方法都来自org.openqa.selenium.WebDriver这个接口;这些方法都 是在org.openqa.selenium.remote.RemoteWebDriver这个类中实现的,然后不同浏览器的driver类继承 RemoteWebDriver 2.2. WD定位页面元素 Selenium-Webdriver 提 供 了 强 大 的 元 素 定 位 方 法 , 支 持 以 下 三 种 方 法 。  单 个 对 象 的 定 位 方 法  多 个 对 象 的 定 位 方 法  层 级 定 位 2.2.1. 定位单个元素 在 定 位 单 个 元 素 时 ,selenium-webdriver 提 示 了 如 下 一 些 方 法 对 元 素 进 行 定 位 。 下 面 这 些 定 位 方 式 中 , 优 先 使 用 id、 name、 classname, 对 于 网 上 的 链 接 元 素 , 推 荐 使 用 linkText 定 位 方 式 , 对 于 不 好 定 位 的 元 素 , 考 虑 使 用 火 狐 的 插 件 去 辅 助 定 位 (xpath)。 By.className(className)) //对于元素的属性包含class的情况适用 By.cssSelector(selector) //通用定位方式,对于不好定位的元素适用,后续章节介绍 By.id(id) //对于元素的属性包含id的情况适用,推荐使用 By.linkText(linkText) //适用于链接类的元素,即标签,包含herf属性的元素 By.name(name) //对于元素的属性包含name的情况适用 By.partialLinkText(linkText) //适用于链接类的元素,模糊匹配,即包含herf属性的元素 Selenium 自动化测试培训 QQ: 2197736050 www.testfan.cn 3
收藏