上一篇面向对象编辑,貌似这个用例已经很完美,但是还有不完善的地方,测试数据(用户名、密码、断言的判断数据)还是硬编码,要想做的更完美,实现逻辑与数据分离,这才是自动化测试的真谛。

方法:运用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)—–逻辑与数据分离相关推荐

  1. ruby+selenium-webdriver一步一步完成自动化测试(5)—–多个测试用例

    在上一篇"逻辑与数据分离"中只有一个测试用例,在这篇中主要是针对多个用例.验证用户名.密码全部错误:用户名.密码全部为空:用户名为空:密码为空,几种情况登录. 1.D盘新建文件夹t ...

  2. selenium ruby和java_针对Ruby的Selenium WebDriver安装指南

    Selenium 1.x时代已经远去,它理应躺在历史的角落里,靠着壁炉烤着火,抽着旱烟,在袅袅的升起的青烟中回忆那曾经属于自己的美好时代. 不过事实却并非如此,现今原本早应退役的selenium 1. ...

  3. 自动化测试 div sendkeys无效_【自动化测试】【JestSelenium】(04)—— Selenium WebDriver...

    目录1. Selenium WebDriver 是什么?2. 安装?3. 编写脚本 3.1. 创建浏览器会话(Chrome) 3.2. 页面导航控制(加载指定测试页面) 3.3. 查找 DOM 元素 ...

  4. selenium webdriver (python)的基本用法一

    阅在线 AIP 文档: http://selenium.googlecode.com/git/docs/api/py/index.html 目录 一.selenium+python 环境搭建..... ...

  5. selenium webdriver使用

    selenium使用 引言 1.selenium课程概要 2.selenium的介绍 2.1selenium工作原理 2.2selenium模块与driver的安装 2.2.1 在python虚拟机环 ...

  6. selenium webdriver (python) 第一版PDF

    前言 如果你是一位有python语言基础的同学,又想通过python+ selenium去实施自动化,那么你非常幸运的找到了这份文档,我也非常荣幸能为你的自动化学习之路带来一丝帮助. 其实,我在sel ...

  7. selenium webdriver入门

    ​概要 WebDriver可以像用户一样驱动原生浏览器,无论是在本地服务器还是在使用Selenium服务器的远程机器上,都标志着浏览器自动化的一个飞跃. Selenium WebDriver也是控制浏 ...

  8. Selenium Webdriver原理终于搞清楚了

    目录 1. Selenium的历史 2. WebDriver协议 3. Selenium驱动浏览器原理 4. 测试代码与Webdriver的交互 5. Webdriver与浏览器的关系 6. Sele ...

  9. python 打开网页 并填表单_Windows下使用python3 + selenium.webdriver功能实现自动填写网页表单功能...

    因为工作原因,需要将xls文件的数据录入到网上.因为数据量太多,而且以后时不时还需要用上,Ctrl+C,Ctrl+V不是长久之计.所有写了一个小工具,用于把xls文件的数据录入到网站上. 读写xls部 ...

  10. 和我一起学 Selenium WebDriver

    http://my.oschina.net/dyhunter/blog/94090 zTree 东西不多,我也一直使用着原始的人工测试手段,随着内容的不断增多,测试起来就越发的繁杂,而且经常犯懒,这样 ...

最新文章

  1. JavaAgent 实现字节码注入
  2. 什么?拼命栽培员工,让他强大到足以离开
  3. Verilog中memory数据类型
  4. python写小程序-用python编写一个闹钟小程序
  5. 最长上升子序列(LIS)算法
  6. 针对access数据库的增删改查
  7. WebGL之物体选择
  8. java string 练习_JAVA基础练习之String
  9. Linux安装yum过程(超详细)
  10. 代理服务器为何受欢迎?
  11. 80004005错误代码_WIN7错误代码0×80004005图文解决教程
  12. AOP名词解释Advice,Pointcut,Advisor,Joinpoint,Advised是什么?
  13. 对一款国家级内容过滤系统Dos安全缺陷分析
  14. 【HTML】Angular JS + Table 根据数据动态合并单元格
  15. 【脚本】get_pixel(用PIL中自带的getpixel,得到单张图像或者某个文件夹中所有图像的P模式index)
  16. 如何用地推进行有效获客降低成本提高效率?
  17. python控制步进电机_MicroPython TPYBoard v102 驱动28BYJ-48步进电机
  18. LeetCode 427. 建立四叉树
  19. SSM框架介绍与搭建
  20. Excel中 匹配尾部字符并替换

热门文章

  1. 常见的html内lian联元素,CSS基础:块元素、内联元素、内联块元素
  2. STM32——HAL版——串口发送字符串函数
  3. php上证指数抽奖代码,[高手指点] 美团网的抽奖是什么原理?
  4. java string 空间_java堆与栈 java String分配内存空间(详解)
  5. C/C++[算法入门]
  6. 算法:翻转整数7. Reverse Integer
  7. iOS 指令集架构Architectures armv6、armv7、armv7s、arm64、arm64e、x86_64、i386
  8. hive出现内存溢出_hive问题处理
  9. 局域网计算机无法配置网关,在内网中,为什么不设置“默认网关”计算机也能互相通讯?...
  10. 现代通信原理5.2:带通信号的(复包络)低通表示