问题标签 [celerity]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - Rails 测试中缺少记录
我正在尝试使用 Cucumber/celerity 和 factorygirl 测试 Rails 的 Javascript。堆栈本身可以工作,但数据库正在发疯。
我在 3001 端口上运行 mongrel(在 cucumber 和测试环境中都尝试过)并通过 celerity 从 cucumber 访问它。
我的一项测试如下所示:
- 创建项目
- 1 项存在
- 做某事
如果我使用简单的 webrat 界面,它工作得很好。
但是对于名人,数据库中的某些内容是错误的:
- 创建项目#in cucumber
- 1 项存在 #in 黄瓜
- 0 项目存在 #in celerity
- 1 项存在 #in 黄瓜
- 在 celerity 中对项目 #fails 做某事,但在黄瓜中有效
任何想法为什么 Celerity 的实例看不到黄瓜中 db 中保存的内容?
PS是的,两个实例都使用相同的数据库......
tdd - Selenium 与 Celerity?
在测试网站方面,Selenium 不是比 Celerity 更好吗?因为可以使用 Firefox、Safari、Chrome 和 Internet Explorer 等真实浏览器,以便我们知道我们的网站与它们中的每一个都兼容。
因此,如果我使用 Celerity(它是 Java 浏览器),即使所有测试都通过了,这是否意味着我的网站仍可能与我们流行的 Web 浏览器不兼容?
我知道它比较慢,但如果我们不考虑这一点,那么 Celerity 不是更容易出错吗?
jruby - 按回车键提交表单
我正在尝试使用 celerity 提交表单。此表单有一个生成的链接,当用户点击回车按钮时会调用该链接。我如何触发这个?
我知道您可以通过找到链接/按钮并按 .click() 来提交。但我想按回车键提交。
我注意到 celerity form 对象有一个:
- (Object) submit 提交表单。
http://celerity.rubyforge.org/yard/Celerity/Form.html#submit-instance_method
但我似乎无法访问它。提前致谢
ruby-on-rails - 使用 mysql 在 Jruby on Rails 应用程序上使用 Cucumber/capybara/celerity 运行集成测试
我有一个我一直在使用 ruby 1.9.1 开发的应用程序。我想在我的 UI 中测试 javascript,而 capybara 的默认 selenium 驱动程序不支持我需要测试的事件。
所以我正在经历使用 rvm 将应用程序切换到 jruby 进行测试的过程,因为显然 celertiy/culerity 目前仅适用于 jruby。我已经安装了我的包,并且该应用程序似乎在 jruby 上正常工作,但是当我尝试运行“rake cucumber”时,我得到以下输出:
有一次,我使用 sqlite 作为我的测试数据库,但后来发生了变化。我什至尝试改回sqlite,但仍然出现相同的错误。如果我在 features/support/env.rb 中禁用 database_cleaner,测试会运行,但它们都会神秘地失败。
有人知道这里发生了什么吗?
javascript - 使用 Celerity 下载文件
我在 JRuby 中使用 Celerity 来自动从某些网站下载一些 .csv 文件。对于其中一个网站(LinkShare),我已经非常接近但无法弄清楚最后一步。
该网站使用 javascript 和“隐藏 iframe”方法推送文件下载 - 在常规浏览期间,当您单击下载按钮时,它会调用 javascript 来创建包含下载内容的隐藏 iframe,浏览器会选择并提示用户保存文件。
显然,在 Celerity 中的工作方式并不完全相同。单击链接后,我可以在 jirb 中看到新的 iframe,但无法在其上调用任何方法,出现如下错误:
有人对 Celerity/Htmlunit/Javascript/Jruby 有足够的经验,他们可以为我指明正确的方向吗?我只想检索下载内容(.csv 文件)。
或者,是否有人知道更适合该任务的(无头)浏览器自动化工具,如果存在的话?
ruby - 有没有人想出一种在多个浏览器/网络驱动程序上运行相同黄瓜场景的方法?
我正在使用 cucumber + capybara 进行一些网络自动化测试。我希望能够连接我自己的标签(类似于场景之前的@all_browsers),并让它针对我设置的网络驱动程序列表(celerity、firefox 上的 selenium、ie 和 chrome)运行。我不想用 4 个不同的标签在 4 个不同的时间编写场景。我已经考虑尝试使用我通过以下方式注册的新驱动程序来做到这一点:
然后跟进:
但我不太确定在可能实际工作的 Before 方法中放入什么。
我试过使用黄瓜钩,特别是:
但这并不像我希望的那样。它使用相同的驱动程序并使用它运行场景两次。
沿着钩线,黄瓜文档中有这个:
You may also provide an AfterConfiguration hook that will be run after Cucumber has been configured. This hook will run only once; after support has been loaded but before features are loaded. You can use this hook to extend Cucumber, for example you could affect how features are loaded...
这可能是一个潜在的途径,但我也没有设法想出任何可以在这里工作的东西。
我已经研究过自定义格式化程序,但它们实际上只是看起来确实是这样做的——格式化输出,而不是指定功能的实际运行方式。
我已经研究过覆盖黄瓜的功能运行器,但这看起来并不容易或友好。
请帮忙?任何人?
include - 使用包含?在 Celerity 屏幕抓取脚本中
我正在使用 Celerity 屏幕抓取网页,并尝试抓取特定 div 类中的所有文本元素。我正在使用的以下代码行引发以下错误:错误的参数类型字符串(预期模块)(TypeError)
代码:puts browser.text if browser.frame(:id, 'bottomframe').div.class.include? 'ClassName'
谁能告诉我这个错误是什么意思,或者更重要的是如何修复我的代码行。
screen-scraping - Celerity - 帮助 popup_browser 选择列表更新主浏览器上的 div 文本
我正在屏幕抓取一个页面,其中包含一个链接,该链接生成一个弹出窗口,该窗口由一个选择列表和一个按钮组成,用于执行您的选择。目的是点击主页上的链接,在弹出的窗口中进行选择,点击链接确认选择,然后在主网页上查看新的选择。
以下是我在 Celerity 中采取的步骤和结果:
除了最后一行之外,一切似乎都运行良好。我已经进行了一些调试,并确认我的选择已经完成。单击弹出页面上的 ChangeHoliday 按钮后,似乎主网页没有更新。
任何想法或建议将不胜感激。
提前感谢您的帮助。
ruby - 使用 celerity 在 linux 上登录 saleforce.com (w/no gui), JS & VB 错误
背景: 下面的脚本登录到我的 salesforce.com 帐户并尝试单击一堆“下载”链接并将生成的 .zip 导出文件保存在本地。
我正在使用 jruby 和celerity(它是一个围绕 htmlunit 的 jruby 包装器,一个无头浏览器,也支持 javascript)。
要求是它在没有安装 gui/浏览器的情况下从LINUX命令行运行。无头浏览器还需要支持 javascript,否则会salesforce.com
返回错误并且不会呈现下载链接。(我尝试了 CURL,但它失败了,因为它不支持 javascript)。(目前,当从WINDOWS框上的命令行运行时,该脚本工作正常)
问题:
当我尝试从 linux 机器运行此程序时,我收到以下错误,并且脚本似乎没有登录到 salesforce。我相信 .js 警告没问题(我认为),但我不明白VBScript not supported in Window.execScript()
警告的含义?:
ruby-on-rails-3 - Celerity 无法遵循 Devise 重定向,因为 Celerity 不发送接受标头并且 Devise 以纯文本响应
我们有一个 Rails 应用程序刚刚升级到 Rails3,使用 Devise 的 Rails3 gem 进行身份验证。我们一直在使用 Capybara 和 Celerity 后端来测试一些页面。
在浏览器中访问应用程序时,当用户尝试访问受保护的页面/控制器时,Devise 会以重定向到登录页面的方式进行响应。
在 Rails 2.x 版本的 Devise 中,即使传入的请求有一个空白的接受标头,它也能正常工作*/*
。
在 Rails 3 版本中,当接受标头为空时,Devise 会以纯文本字符串响应。
空白的接受标头很重要的原因是因为我们使用 Capybara 的 Celerity 后端来测试一些页面,显然 Celerity 发送了一个空白的接受标头,因此不会被 Devise 重定向。此行为已从 Devise for Rails 2.x 更改为 Devise for Rails 3。
Celerity 以 UnexpectedPageException 失败,并且服务器日志报告请求是*/*
作为接受标头发出的。
在完全相同的测试套件上使用 Selenium/Webdriver 后端时,问题就消失了。
有两种方法可以解决这个问题:
- 告诉 Devise 以某种方式始终假定 text/html 作为接受标头并做出相应的响应。那怎么可能呢?我们必须覆盖控制器吗?
- “修复” Celerity 以发送 text/html 作为接受标头。如何才能做到这一点?
- 这是一个 HTMLUnit 问题/错误吗?
对我来说,#2 看起来像是解决此问题的“正确”方法,但我不确定 Celerity/HTMLUnit 缺少接受标头是错误还是功能。想法?