ruby+selenium-webdriver一步一步进行自动化测试------面向对象编程
来源:互联网 发布:刺客信条枭雄1.51优化 编辑:程序博客网 时间:2024/04/28 09:30
前一篇文章中写了一个测试用例,看上去还算不错。但是代码的扩展性并不好,假想对登录进行手动的功能测试,会想到哪些测试用例?(验证错误的用户名正确的密码;
用户名和密码为空直接点击登陆按钮。等等)是不是每个用例都要写一套代码呢?答案肯定是否定的。可以把登录的功能抽象成一个方法。进一步研究发现,有些测试对象也是可以复用的,比如在登陆的时候我们会用到密码输入框、点击登录按钮等,可以把这些“基本动作”封装到一个类中,这样代码的灵活性和适用性将会更强。即,面向对象编程。
用户名和密码为空直接点击登陆按钮。等等)是不是每个用例都要写一套代码呢?答案肯定是否定的。可以把登录的功能抽象成一个方法。进一步研究发现,有些测试对象也是可以复用的,比如在登陆的时候我们会用到密码输入框、点击登录按钮等,可以把这些“基本动作”封装到一个类中,这样代码的灵活性和适用性将会更强。即,面向对象编程。
因此做如下改造:
1.定义一个工具类,此工具类定义方法,各个方法分别用于获取登录连接、用户名、密码、登录按钮等元素;
2.定义一个实现类,此类中定义方法,方法目的是对获取的元素进行操作(点击、录入值等),对元素的操作组织登录方法;
3.建立测试用例进行测试;
改造方法:
1.D盘下新建test003文件夹
2.test003文件夹下新建三个文件夹,分别为action、tool、spec。其中action存放实现类,tool存放工具类,spec存放测试用例
3.action文件夹下新建文件login_main_page.rb;tool文件夹下新建文件login_dialog.rb;spec文件夹下新建文件login_spec.rb
创建的文件结构如下:
4.login_dialog.rb文件中编写如下代码
module LoginDialog def ua_link @dr.find_element(:id,'ua').find_elements(:css,'a') end def login_link ua_link[1] end def to_dialog_frame begin @dr.switch_to.frame('login_frame') rescue raise 'Can not switch to login dialog, make sure the dialog was open' exit end end def usr_field @dr.find_element(:id => 'u') end def psd_field @dr.find_element(:id => 'p') end def login_btn @dr.find_element(:id => 'login_button') end def err_message @dr.find_element(:id=>'err_m').text end def close_browser @dr.close endend
5.login_main_page.rb文件中编写如下代码
require File.dirname(__FILE__)+'/../tool/login_dialog'class LoginMainPage include LoginDialog def initialize(dr) @dr ||=dr end def open_login_dialog login_link.click login_link.send_keys(:enter) sleep 2 end def login(username,password) open_login_dialog to_dialog_frame usr_field.send_keys(username) psd_field.send_keys(password) login_btn.click endend
6.login_spec.rb文件中编写如下代码:
#encoding: utf-8require "rspec"require 'yaml'require 'selenium-webdriver'require File.dirname(__FILE__)+'/../action/login_main_page'require File.dirname(__FILE__)+'/../tool/login_dialog'describe "soso login" do include LoginDialog before(:all) do @dr=Selenium::WebDriver.for :firefox @url='http://www.soso.com' @dr.get @url end before(:each) do @login_element=LoginMainPage.new(@dr) end it "should return username and password is wrong" do @login_element.login("test","test") err_message.should eql ("您输入的帐号或密码不正确,请重新输入。意见反馈") close_browser endend
7.命令行中输入命令:
cd D:\test003rspec -f doc
看到如下结果:
soso login should return username and password is wrongFinished in 8.3 seconds1 example, 0 failures
运行成功
源代码下载地址:http://download.csdn.net/detail/janne09/4402265
- ruby+selenium-webdriver一步一步进行自动化测试------面向对象编程
- ruby+selenium-webdriver一步一步进行自动化测试----学习总结陈述
- ruby+selenium-webdriver一步一步完成自动化测试-----准备篇
- ruby+selenium-webdriver一步一步完成自动化测试----生成测试报告
- ruby+selenium-webdriver一步一步完成自动化测试-----一个测试用例
- ruby+selenium-webdriver一步一步完成自动化测试-----多个测试用例
- ruby+selenium-webdriver一步一步完成自动化测试-----第一个小例子
- ruby+selenium-webdriver一步一步完成自动化测试-----逻辑与数据分离
- 使用selenium和webdriver进行自动化测试
- 自动化测试--selenium-webDriver
- 自动化测试selenium webdriver启动
- 自动化测试工具 Selenium WebDriver 入门教程
- selenium webdriver junit自动化测试架构
- Selenium WebDriver 自动化测试截图问题
- 自动化测试工具 Selenium WebDriver 入门教程
- 自动化测试工具 Selenium WebDriver 入门教程
- SoapUI + Selenium Webdriver 自动化测试学习
- python3里使用selenium webdriver自动化测试
- 实现(真)随机数
- 编写strcmp函数
- 一、什么是云计算?
- 写出你能想到的最高效的逆序存放字符串程序
- Linux系统基础开发技术1:构建Linux 库文件
- ruby+selenium-webdriver一步一步进行自动化测试------面向对象编程
- 编写一个函数 比较三个字符串的大小
- 遗传算法求解旅行商问题
- 删除指定位置字符
- 删除指定字符
- 电文加密
- Android内存管理策略的优化
- Mac下SVN工具修改了的文件不能比较解决方法
- servlet(待续)