- 浏览: 2072388 次
- 性别:
- 来自: NYC
文章分类
- 全部博客 (628)
- Linux (53)
- RubyOnRails (294)
- HTML (8)
- 手册指南 (5)
- Mysql (14)
- PHP (3)
- Rails 汇总 (13)
- 读书 (22)
- plugin 插件介绍与应用 (12)
- Flex (2)
- Ruby技巧 (7)
- Gem包介绍 (1)
- javascript Jquery ext prototype (21)
- IT生活 (6)
- 小工具 (4)
- PHP 部署 drupal (1)
- javascript Jquery sort plugin 插件 (2)
- iphone siri ios (1)
- Ruby On Rails (106)
- 编程概念 (1)
- Unit Test (4)
- Ruby 1.9 (24)
- rake (1)
- Postgresql (6)
- ruby (5)
- respond_to? (1)
- method_missing (1)
- git (8)
- Rspec (1)
- ios (1)
- jquery (1)
- Sinatra (1)
最新评论
-
dadadada2x:
user模型里加上 protected def email ...
流行的权限管理 gem devise的定制 -
Sev7en_jun:
shrekting 写道var pattern = /^(0| ...
强悍的ip格式 正则表达式验证 -
jiasanshou:
好文章!!!
RPM包rpmbuild SPEC文件深度说明 -
寻得乐中乐:
link_to其实就是个a标签,使用css控制,添加一个参数: ...
Rails在link_to中加参数 -
aiafei0001:
完全看不懂,不知所然.能表达清楚一点?
"$ is not defined" 的问题怎么办
普通的webrat和cucumber做这样的测试会比较费劲,特别是涉及ajax交互的时候,那么,看了篇关于用selenium在java测试的文章
见后,发现ruby的selenium封装并没有那么复杂,但是,确有一些技巧
实现如下:
主要用到了selenium_client的几个方法:
Retrieves the message of a JavaScript confirmation dialog generated during the previous action.
By default, the confirm function will return true, having the same effect as manually clicking OK. This can be changed by prior execution of the chooseCancelOnNextConfirmation command.
If an confirmation is generated but you do not consume it with getConfirmation, the next Selenium action will fail.
NOTE: under Selenium, JavaScript confirmations will NOT pop up a visible dialog.
NOTE: Selenium does NOT support JavaScript confirmations that are generated in a page‘s onload() event handler. In this case a visible dialog WILL be generated and Selenium will hang until you manually click OK.
上面两个方法的源代码说明,是调用selenium自己的对应方法,也就是封装,这时可以参考selenium自己的API看这个两个方法怎么用。
By default, Selenium‘s overridden window.confirm() function will return true, as if the user had manually clicked OK; after running this command, the next call to confirm() will return false, as if the user had clicked Cancel. Selenium will then resume using the default behavior for future confirmations, automatically returning true (OK) unless/until you explicitly call this command for each confirmation.
Take note - every time a confirmation comes up, you must consume it with a corresponding getConfirmation, or else the next selenium operation will fail.
Undo the effect of calling chooseCancelOnNextConfirmation. Note that Selenium‘s overridden window.confirm() function will normally automatically return true, as if the user had manually clicked OK, so you shouldn‘t need to use this command unless for some reason you need to change your mind prior to the next confirmation. After any confirmation, Selenium will resume using the default behavior for future confirmations, automatically returning true (OK) unless/until you explicitly call chooseCancelOnNextConfirmation for each confirmation.
Take note - every time a confirmation comes up, you must consume it with a corresponding getConfirmation, or else the next selenium operation will fail.
Selenium处理弹出窗口
分类:
对网页弹出窗口,如WIKI所述,若要保持脚本运行稳定,必须在waitForPopUp这个弹出窗口之后紧跟运行selectWindow命令选中这个弹出窗口(示例),如果仍不稳定请参考这个示例。这里介绍了chooseCancelOnNextConfirmation、chooseOkOnNextConfirmation等JavaScript脚本实现的弹出窗口处理函数,selenium会弹出网页窗口,因为它重写了window.open在文件selenium-browserbot.js函数BrowserBot.prototype.modifyWindowToRecordPopUpDialogs中的newOpen,但这必须在window.onload之后创建才有效。对于HTTPS安全性弹出窗口证书的处理,见Selenium RC。
对非网页弹出窗口,如window.alert,window.confirm,window.prompt,window. showModalDialog等,有如下方法:
1.封装Windows Api,对Java语言则有Java Native Interface (JNI)或者J/Invoke(示例)。
2.Selenium RC中开启proxy injection(PI)模式也可以识别,这种模式提供了一个HTTP代理在浏览器之前自动更改所有接收到的HTML。window.alert, window.confirm,window.prompt在文件selenium-browserbot.js函数BrowserBot.prototype.modifyWindowToRecordPopUpDialogs中被覆写。
3.这里用window.open覆写了window. showModalDialog,同样实现的还有在文件selenium-browserbot.js函数BrowserBot.prototype._modifyWindow实现开始部分添加对ModalDialog的实现。
见后,发现ruby的selenium封装并没有那么复杂,但是,确有一些技巧
实现如下:
Given /^I choose "([^"]*)" on the next confirmation$/ do |type| selenium.send( "choose_#{type}_on_next_confirmation" ) end Given /^I choose$/ do # selenium.send( "choose_#{type}_on_next_confirmation" ) selenium.get_confirmation() end
Scenario: Successfully remove page if choose ok Given I click on "Show/Hide" And I should see "My" And I choose "ok" on the next confirmation And I click on "remove page " And I choose When I click on "Show/Hide" Then I should see "1 pages" When I click on "Show/Hide" Then I should see "My"
主要用到了selenium_client的几个方法:
def get_confirmation() return string_command("getConfirmation", []) end
引用
Retrieves the message of a JavaScript confirmation dialog generated during the previous action.
By default, the confirm function will return true, having the same effect as manually clicking OK. This can be changed by prior execution of the chooseCancelOnNextConfirmation command.
If an confirmation is generated but you do not consume it with getConfirmation, the next Selenium action will fail.
NOTE: under Selenium, JavaScript confirmations will NOT pop up a visible dialog.
NOTE: Selenium does NOT support JavaScript confirmations that are generated in a page‘s onload() event handler. In this case a visible dialog WILL be generated and Selenium will hang until you manually click OK.
def choose_ok_on_next_confirmation() remote_control_command("chooseOkOnNextConfirmation", []) end
def choose_cancel_on_next_confirmation() remote_control_command("chooseCancelOnNextConfirmation", []) end
上面两个方法的源代码说明,是调用selenium自己的对应方法,也就是封装,这时可以参考selenium自己的API看这个两个方法怎么用。
引用
By default, Selenium‘s overridden window.confirm() function will return true, as if the user had manually clicked OK; after running this command, the next call to confirm() will return false, as if the user had clicked Cancel. Selenium will then resume using the default behavior for future confirmations, automatically returning true (OK) unless/until you explicitly call this command for each confirmation.
Take note - every time a confirmation comes up, you must consume it with a corresponding getConfirmation, or else the next selenium operation will fail.
引用
Undo the effect of calling chooseCancelOnNextConfirmation. Note that Selenium‘s overridden window.confirm() function will normally automatically return true, as if the user had manually clicked OK, so you shouldn‘t need to use this command unless for some reason you need to change your mind prior to the next confirmation. After any confirmation, Selenium will resume using the default behavior for future confirmations, automatically returning true (OK) unless/until you explicitly call chooseCancelOnNextConfirmation for each confirmation.
Take note - every time a confirmation comes up, you must consume it with a corresponding getConfirmation, or else the next selenium operation will fail.
引用
Selenium处理弹出窗口
分类:
对网页弹出窗口,如WIKI所述,若要保持脚本运行稳定,必须在waitForPopUp这个弹出窗口之后紧跟运行selectWindow命令选中这个弹出窗口(示例),如果仍不稳定请参考这个示例。这里介绍了chooseCancelOnNextConfirmation、chooseOkOnNextConfirmation等JavaScript脚本实现的弹出窗口处理函数,selenium会弹出网页窗口,因为它重写了window.open在文件selenium-browserbot.js函数BrowserBot.prototype.modifyWindowToRecordPopUpDialogs中的newOpen,但这必须在window.onload之后创建才有效。对于HTTPS安全性弹出窗口证书的处理,见Selenium RC。
对非网页弹出窗口,如window.alert,window.confirm,window.prompt,window. showModalDialog等,有如下方法:
1.封装Windows Api,对Java语言则有Java Native Interface (JNI)或者J/Invoke(示例)。
2.Selenium RC中开启proxy injection(PI)模式也可以识别,这种模式提供了一个HTTP代理在浏览器之前自动更改所有接收到的HTML。window.alert, window.confirm,window.prompt在文件selenium-browserbot.js函数BrowserBot.prototype.modifyWindowToRecordPopUpDialogs中被覆写。
3.这里用window.open覆写了window. showModalDialog,同样实现的还有在文件selenium-browserbot.js函数BrowserBot.prototype._modifyWindow实现开始部分添加对ModalDialog的实现。
发表评论
-
Destroying a Postgres DB on Heroku
2013-04-24 10:58 927heroku pg:reset DATABASE -
VIM ctags setup ack
2012-04-17 22:13 3255reference ctags --extra=+f --e ... -
alias_method_chain方法在3.1以后的替代使用方式
2012-02-04 02:14 3287alias_method_chain() 是rails里的一个 ... -
一些快速解决的问题
2012-01-19 12:35 1470问题如下: 引用Could not open library ... -
API service 安全问题
2011-12-04 08:47 1379这是一个长期关注的课题 rest api Service的 ... -
Module方法调用好不好
2011-11-20 01:58 1344以前说,用module给class加singleton方法,和 ... -
一个ajax和rails交互的例子
2011-11-19 01:53 1903首先,这里用了一个,query信息解析的包,如下 https: ... -
Rails 返回hash给javascript
2011-11-19 01:43 2272这是一个特别的,不太正统的需求, 因为,大部分时候,ajax的 ... -
关于Rubymine
2011-11-18 23:21 2262开个帖子收集有关使用上的问题 前一段时间,看到半价就买了。想 ... -
ruby中和javascript中,动态方法的创建
2011-11-18 21:01 1234class Klass def hello(*args) ... -
textmate快捷键 汇总
2011-11-16 07:20 8138TextMate 列编辑模式 按住 Alt 键,用鼠标选择要 ... -
Ruby面试系列六,面试继续面试
2011-11-15 05:55 2018刚才受到打击了,充分报漏了自己基础不扎实,不肯向虎炮等兄弟学习 ... -
说说sharding
2011-11-13 00:53 1481这个东西一面试就有人 ... -
rails面试碎碎念
2011-11-12 23:51 1939面试继续面试 又有问ru ... -
最通常的git push reject 和non-fast forward是因为
2011-11-12 23:29 17209git push To git@github.com:use ... -
Rails 自身的many to many关系 self has_many
2011-11-12 01:43 2731简单点的 #注意外键在person上people: id ... -
Rails 3下的 in place editor edit in place
2011-11-12 01:20 945第一个版本 http://code.google.com/p ... -
Heroku 的诡异问题集合
2011-11-11 07:22 1692开个Post记录,在用heroku过程中的一些诡异问题和要注意 ... -
SCSS 和 SASS 和 HAML 和CoffeeScript
2011-11-07 07:52 12952Asset Pipeline 提供了内建 ... -
Invalid gemspec because of the date format in specification
2011-11-07 02:14 2115又是这个date format的错误。 上次出错忘了,记录下 ...
相关推荐
Rails鼓励TDD(测试驱动开发),包括单元测试、集成测试和功能测试。RSpec、Capybara等库可以帮助编写和运行这些测试,确保代码质量。 这个Rails项目提供了学习和研究Web开发的机会,特别是对于Ruby on Rails新手...
为了运行和测试应用,你需要在命令行中使用Rails服务器。在Aptana中,可以使用内置的终端工具。打开“Terminal”视图,输入`rails server`启动服务器,然后在浏览器中访问`http://localhost:3000`查看你的应用。 在...
在使用Rails基准测试器时,可以指定不同的选项来进行性能测试,例如通过-perf选项来启用或覆盖默认的日志记录级别,通过-nocache选项关闭Rails缓存以排除缓存对测试结果的影响,以及通过-path选项来指定测试脚本的...
5. **易于测试**:Rails提供了完善的单元测试、集成测试框架,便于开发者编写高质量的代码。 ### 三、构建RESTful API的关键步骤 1. **确定资源**:首先明确API需要处理哪些资源(例如用户、订单、文章等),并为...
书中第二章提到 **测试驱动开发(TDD)** 和 **行为驱动开发(BDD)**,这两种方法是 Rails 社区广泛采用的测试策略。 - **测试驱动开发(TDD)**: - 测试先行:先编写测试用例,再编写满足这些测试的代码。 - 循环...
可以通过在命令行中输入`rails -v`来确定正在使用的Rails版本。 #### 二、作者团队与贡献者 《敏捷Web开发与Rails》第三版由多位业界专家共同撰写: - **Sam Ruby**:Rails项目的贡献者之一,对Web技术有着深厚的...
通过执行`rails -v`命令,可以快速确定当前运行的Rails版本。 ### 敏捷Web开发 本书的核心主题是敏捷Web开发,这是一种迭代和增量的开发方式,强调软件开发过程中的灵活性和响应变化能力。它与传统的瀑布式开发...
要确定自己正在使用的Rails版本,可以在命令行中输入`rails -v`命令查看。这有助于确保代码的正确运行,并避免由于版本差异带来的问题。 #### 二、Rails框架概述 Rails是一个开源的Web应用框架,使用Ruby语言编写...
描述中的“Rbuy for Rails源代码”进一步确认了这是一个开源项目,提供了Rbuy组件的原始编程文本,允许开发者查看、学习和修改其内部工作原理。源代码对于开发者来说非常重要,因为它提供了深入理解软件如何运行的...
标签"rails,例子"进一步确认了这是一个关于Rails框架的示例代码或教程。Rails的例子通常包含了从创建新的Rails应用开始,一直到部署上线的全部步骤,包括数据库迁移、路由设置、控制器和模型的编写、视图的渲染以及...
这个压缩包对于想要在Linux环境下回溯历史版本的Rails开发者或者研究老项目的人员来说非常有用,因为不同的Rails版本可能会有不同的行为和API,理解这些差异有助于维护旧代码或进行兼容性测试。同时,这也为那些不...
Split框架充分利用了Rack的特性,将A/B测试的逻辑无缝地集成到Ruby on Rails或其他Rack兼容的应用中。 首先,让我们深入了解一下什么是A/B测试。A/B测试是一种统计方法,用于比较两种或多种变体(如网页设计、营销...
4. **数据库连接**:确认数据库连接器(如ActiveRecord)的连接参数中包含正确的字符集配置,如`encoding: 'utf8mb4'`。 5. **模板引擎**:ERB、Haml、Slim等模板引擎在处理中文时也可能需要设置编码。在Rails中,...
- **rails 4**:再次确认了本书关注的是Rails 4这一特定版本。 #### 部分内容解析: - **Beta版信息**:本书目前处于Beta阶段,这意味着它仍在开发中,未经过全面的技术编辑和校对。可能存在错误、拼写错误、语法...
- **Rails** 内置了测试框架,支持编写不同级别的测试用例。功能测试(也称为集成测试)主要关注应用程序的整体行为,而单元测试则专注于测试单独的代码模块。 - 通过编写全面的测试用例,开发者可以在修改代码或...
11. **测试(Testing)**:Rails提供了一套完整的测试框架,包括单元测试、集成测试和功能测试。`test/`目录下存放着各种测试文件,通过`rails test`命令运行。 12. **Gemfile与依赖管理**:Gemfile是Rails项目的...
因此,在开始项目之前,确定正确的Rails版本是非常重要的一步。书中提供了如何安装特定版本Rails的方法,并且推荐读者访问官方文档以获取有关版本变更的最新信息。 #### 八、总结 《Agile Web Development with ...
在Rails应用中,我们经常需要处理用户确认操作,比如删除、更新等,确保用户在执行不可逆操作前进行确认。传统的确认方式通常是浏览器自带的弹窗,但这种方式样式单一,用户体验较差。因此,很多开发者转向了第三方...
Rails项目必备组件通常包括框架的核心组件、数据库管理、前端资源、测试工具和其他辅助库。以下将详细介绍这些关键组件及其作用。 1. **Rails框架核心组件**: - **ActionPack**:包含ActionController和Action...