最近在写cucumber测试的过程中,遇到一些问题,本来打算系统的整理一下,看样子没有这个时间,就能记多少记多少,杂乱无章的收吧。
在Rails项目中,越来越多的使用AJAX的时候,验收测试页面用cucumber就不行了,因为,Cucumber本身是使用webrat的模拟浏览器行为。
那么,就需要用selenium来测试,这时候,一些事件的封装就不太一样了。
比如:
<%= image_submit_tag "image_file_name", :id => "submit" %>
你可以写
And I press "submit"
实际上,我们查看step定义我们知道press是调用的click_button
如果,我们页面ajax调用又多个submit按钮,或者多个input框,而且用同样的name,(也有时候就是循环产生的)
那么在cucumber下我们可能要用scope
When /^I (press|follow|check|uncheck|choose) "([^\"]*)" for (.*) whose (.*) is "([^\"]*)"$/ do |action, whatyouclick, class_name, var_name, value|
unless var_name == "id" then
id = eval("\"#{class_name}\".classify.constantize.find_by_#{var_name}(\"#{value}\").id.to_s")
else
id = value
end
within("tr[id=row_#{class_name}_#{id}]") do
case action
when "press"
click_button(whatyouclick)
when "follow"
click_link(whatyouclick)
when "check"
check(whatyouclick)
when "uncheck"
uncheck(whatyouclick)
when "choose"
uncheck(whatyouclick)
end
end
end
然而,我们尝试就会发现selenium并不支持within
那么就需要使用封装了的selenium语法进行测试
When /(?:|I )press "([^"]*)" via ajax$/ do |locator|
selenium.click "css=#{locator}"
end
When /^(?:|I )fill in "([^\"]*)" with "([^\"]*)" via ajax$/ do |locator, value|
selenium.type( "css=#{locator}",value )
end
Given /^I check "([^"]*)" via ajax$/ do |locator|
selenium.check "css=#{locator}"
end
其中,locator可以支持的语法包括
引用
id=id
name=name
dom=javascriptExpression
xpath=xpathExpression
link=textPattern
css=cssSelectorSyntax
更详细的信息可以参考
http://seleniumhq.org/docs/04_selenese_commands.html
http://release.seleniumhq.org/selenium-core/0.8.0/reference.html
关于用selenium 定位一个属性是否在一个html范围内
见下篇
分享到:
相关推荐
Ajax、Prototype和Scriptaculous等JavaScript代码库和RJS,Session管理、用户登录和认证系统,XML和ActiveResource,后台处理和ActionMaile,测试和specs(包括RSpec on Rails和Selenium),安装、管理、编写插件,...
combustion, 简单,优雅的Rails 引擎测试 燃烧in是一个以简单有效的方式测试 Rails 引擎的库,而不是在规范或者测试文件夹中创建完整的Rails 应用。它允许你在引擎的上下文中编写你的规格,只使用你需要的Rails 应用...
使用RSpec 测试Rails 程序.pdf
Rails 5.0开发和Travis CI测试 将捆绑程序gem缓存到Docker卷中,该卷在构建和Gemfile更改之间持续存在 运行Capybara测试的Selenium Chrome独立实例,以及与测试浏览器会话进行交互的VNC连接 这些洞察力需要一段时间...
RSepc框架是一个rails下的测试框架。该文档内含实例及github地址。
API Taster - 一种快速而简单的方法来可视化测试你的Rails应用API
rails-perftest, 测试和配置你的Rails 应用程序 性能测试 Rails 应用程序本指南介绍了 Ruby on Rails 应用程序性能测试的各种方法。阅读本指南后,你将知道:各种类型的基准测试和分析度量。如何生成性能和基准测试...
testfixtures - 一个辅助工具用于实现类似Rails的测试装置来测试数据库应用程序
ruby2.0.0+selenium-webdriver+watir-webdriver+rails离线备份,设置环境变量后可使用(未测试)
rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails ...
茶匙 由[Morgan Keys]标识( ) Teaspoon... Teaspoon利用了Rails资产管道,并附带了对Jasmine,Mocha和QUnit的支持。 如果您想将Teaspoon与一起使用,请查看项目。 或者,如果您想使用预加载器,请尝试使用非官方的
Rails的A/B测试
在这个全球互联的世界中,计算机编程和 Web 应用程序开发都在迅猛发展,我很期待能为中国的开发者提供 Ruby on Rails 培训。学习英语这门世界语言是很重要的,但先通过母语学习往往会更有效果。正因为这样,当看到 ...
自动化测试selenium实例,在ruby 1.8.5 (2006-12-25 patchlevel 12) [i386-mswin32],Rails 1.2.2环境下测试通过. 工程可直接运行,相关的测试代码在工作目录\public\selenium\tests下
[Pragmatic Bookshelf] Crafting Rails Applications Expert Practices for Everyday Rails Development (E-Book) ☆ 图书概要:☆ Rails 3 is a huge step forward. You can now easily extend the framework, ...
让你知道在rails中如何使用路由,路由与URL是如何对应的。
Ruby on Rails Guides v2 - Ruby on Rails 4.2.5
一个用Ruby on Rails搭建的图片分享的网站项目.完整源代码
Bootstrap 3 和 Rails 4(样例用的是Ruby 2.1.1,Rails 4.1.4) Table of Contents Preface 1 Chapter 1: Introducing Web Application Development in Rails 7 Why Bootstrap with Rails? 8 Setting up a Todo ...
本资源是参照rails敏捷开发第四版书中的例子,rails的版本是rails3.2.6