ruby+selenium-webdriver一步一步完成自动化测试(4)—–逻辑与数据分离
上一篇面向对象编辑,貌似这个用例已经很完美,但是还有不完善的地方,测试数据(用户名、密码、断言的判断数据)还是硬编码,要想做的更完美,实现逻辑与数据分离,这才是自动化测试的真谛。
方法:运用yaml,读取配置文件中测试数据
1.D盘新建文件夹test004,test004文件夹下创建文件夹action、config、spec、tool。
action文件夹中新建文件login_main_page.rb
config文件夹中新建文件login_data.yml
spec文件夹中新建文件login_spec.rb
tool文件夹中新建文件login_dialog.rb
2.login_dialog.rb文件内容与上一篇“面向对象编程”中login_dialog.rb内容一致
3.login_main_page.rb文件内容与上一篇“面向对象编程”中login_main_page.rb内容一致
4.login_data.yml文件中编写如下内容:
data:mainPage:url: http://www.soso.comtitle: 搜搜更懂你 login:wrong:username: testpassword: testmessage: 您输入的帐号或密码不正确,请重新输入。意见反馈
5.login_spec.rb文件中编写如下内容:
#encoding: utf-8
require "rspec"
require 'yaml'
require 'selenium-webdriver' require File.dirname(__FILE__)+'/../action/login_main_page'
require File.dirname(__FILE__)+'/../tool/login_dialog' describe "soso login" doinclude LoginDialogbefore(:all) do@problem=YAML.load(File.open(File.dirname(__FILE__)+'/../config/login_data.yml'))@dr=Selenium::WebDriver.for :firefox@url=@problem["data"]["mainPage"]["url"]#@url='http://www.soso.com'@dr.get @urlendbefore(:each) do@login_element=LoginMainPage.new(@dr)endafter(:each) doclose_browserend it "should return username and password is wrong" do@login_element.login(@problem["data"]["login"]["wrong"]["username"],@problem["data"]["login"]["wrong"]["password"])err_message.should eql (@problem["data"]["login"]["wrong"]["message"])end
end
6.命令行运行命令:
cd d:\test004
rspec -f doc
得到如下结果:
soso loginshould return username and password is wrong Finished in 9.23 seconds
1 example, 0 failures
运行通过
转载于:https://www.cnblogs.com/timsheng/archive/2012/09/12/2682643.html
ruby+selenium-webdriver一步一步完成自动化测试(4)—–逻辑与数据分离相关推荐
- ruby+selenium-webdriver一步一步完成自动化测试(5)—–多个测试用例
在上一篇"逻辑与数据分离"中只有一个测试用例,在这篇中主要是针对多个用例.验证用户名.密码全部错误:用户名.密码全部为空:用户名为空:密码为空,几种情况登录. 1.D盘新建文件夹t ...
- selenium ruby和java_针对Ruby的Selenium WebDriver安装指南
Selenium 1.x时代已经远去,它理应躺在历史的角落里,靠着壁炉烤着火,抽着旱烟,在袅袅的升起的青烟中回忆那曾经属于自己的美好时代. 不过事实却并非如此,现今原本早应退役的selenium 1. ...
- 自动化测试 div sendkeys无效_【自动化测试】【JestSelenium】(04)—— Selenium WebDriver...
目录1. Selenium WebDriver 是什么?2. 安装?3. 编写脚本 3.1. 创建浏览器会话(Chrome) 3.2. 页面导航控制(加载指定测试页面) 3.3. 查找 DOM 元素 ...
- selenium webdriver (python)的基本用法一
阅在线 AIP 文档: http://selenium.googlecode.com/git/docs/api/py/index.html 目录 一.selenium+python 环境搭建..... ...
- selenium webdriver使用
selenium使用 引言 1.selenium课程概要 2.selenium的介绍 2.1selenium工作原理 2.2selenium模块与driver的安装 2.2.1 在python虚拟机环 ...
- selenium webdriver (python) 第一版PDF
前言 如果你是一位有python语言基础的同学,又想通过python+ selenium去实施自动化,那么你非常幸运的找到了这份文档,我也非常荣幸能为你的自动化学习之路带来一丝帮助. 其实,我在sel ...
- selenium webdriver入门
概要 WebDriver可以像用户一样驱动原生浏览器,无论是在本地服务器还是在使用Selenium服务器的远程机器上,都标志着浏览器自动化的一个飞跃. Selenium WebDriver也是控制浏 ...
- Selenium Webdriver原理终于搞清楚了
目录 1. Selenium的历史 2. WebDriver协议 3. Selenium驱动浏览器原理 4. 测试代码与Webdriver的交互 5. Webdriver与浏览器的关系 6. Sele ...
- python 打开网页 并填表单_Windows下使用python3 + selenium.webdriver功能实现自动填写网页表单功能...
因为工作原因,需要将xls文件的数据录入到网上.因为数据量太多,而且以后时不时还需要用上,Ctrl+C,Ctrl+V不是长久之计.所有写了一个小工具,用于把xls文件的数据录入到网站上. 读写xls部 ...
- 和我一起学 Selenium WebDriver
http://my.oschina.net/dyhunter/blog/94090 zTree 东西不多,我也一直使用着原始的人工测试手段,随着内容的不断增多,测试起来就越发的繁杂,而且经常犯懒,这样 ...
最新文章
- JavaAgent 实现字节码注入
- 什么?拼命栽培员工,让他强大到足以离开
- Verilog中memory数据类型
- python写小程序-用python编写一个闹钟小程序
- 最长上升子序列(LIS)算法
- 针对access数据库的增删改查
- WebGL之物体选择
- java string 练习_JAVA基础练习之String
- Linux安装yum过程(超详细)
- 代理服务器为何受欢迎?
- 80004005错误代码_WIN7错误代码0×80004005图文解决教程
- AOP名词解释Advice,Pointcut,Advisor,Joinpoint,Advised是什么?
- 对一款国家级内容过滤系统Dos安全缺陷分析
- 【HTML】Angular JS + Table 根据数据动态合并单元格
- 【脚本】get_pixel(用PIL中自带的getpixel,得到单张图像或者某个文件夹中所有图像的P模式index)
- 如何用地推进行有效获客降低成本提高效率?
- python控制步进电机_MicroPython TPYBoard v102 驱动28BYJ-48步进电机
- LeetCode 427. 建立四叉树
- SSM框架介绍与搭建
- Excel中 匹配尾部字符并替换
热门文章
- 常见的html内lian联元素,CSS基础:块元素、内联元素、内联块元素
- STM32——HAL版——串口发送字符串函数
- php上证指数抽奖代码,[高手指点] 美团网的抽奖是什么原理?
- java string 空间_java堆与栈 java String分配内存空间(详解)
- C/C++[算法入门]
- 算法:翻转整数7. Reverse Integer
- iOS 指令集架构Architectures armv6、armv7、armv7s、arm64、arm64e、x86_64、i386
- hive出现内存溢出_hive问题处理
- 局域网计算机无法配置网关,在内网中,为什么不设置“默认网关”计算机也能互相通讯?...
- 现代通信原理5.2:带通信号的(复包络)低通表示