问题标签 [poltergeist]
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.
selenium - Capybara 规范在单独运行时通过,但在作为套件的一部分运行失败时失败
任何人都知道为什么请求规范在运行时从不通过bundle exec rspec spec
但在直接运行时通过的任何特殊原因bundle exec rspec spec/requests/models_spec.rb
?
我已经在 selenium 和 poltergeist 中尝试过规范,但得到了相同的结果。当我运行整个测试套件时,规范失败,当我单独运行它时,它通过了。
我有一个关于模型规范的相关问题为什么 RSpec 会报告同一类型的多个验证错误?这可能是相关的。
ruby - 在 Ubuntu 12.04 上访问登录页面时出现 Poltergeist 超时错误
给定Ubuntu 12.04
,Poltergeist 0.7.0
和一个规范(仅使用普通的旧orPhantomJS 1.6.5
传递),我在尝试访问页面时收到以下错误:capybara webkit
selenium
同样的命令也在 Mac 10.7 上本地传递。
有任何想法吗?
ruby-on-rails-3 - 使用 Poltergeist PhantomJS Capybara 驱动程序设置 Cookie
我在尝试使用 Poltergeist gem 设置 cookie 时遇到了问题,并且通过阅读 Poltergeist gem 上的已关闭问题,这似乎是我的用户错误问题,但我现在已经花了一整天的时间来尝试正确设置cookie,我似乎无法正确设置。
注意:此测试在 selenium 中运行良好,但由于 selenium 的运行时间问题,我想使用 poltergeist。
我正在处理的应用程序正在使用“_location”cookie 来确定一些整体设置,并且我需要在我第一次访问应用程序中的任何页面时访问该 cookie。否则,我会收到一个 javascript 错误,以查找由于未设置位置而未设置的值。
Poltergeist gem 的自述文件显示了 cookie 的以下用法
操作 cookie
以下方法用于检查和操作 cookie:
page.driver.cookies
- 当前页面可访问的 cookie 哈希。键是 cookie 名称。这些值是 Cookie 对象,具有以下方法:name
, value
, domain
, path
, secure?
, httponly?
, expires
.
page.driver.set_cookie(name, value, options = {})
- 设置一个cookie。选项哈希可以采用以下键::domain
, :path
, :secure
, :httponly
, :expires
. :expires
应该是一个时间对象。
page.driver.remove_cookie(name)
- 删除 cookie
-- 规格/spec_helper.rb
--views/admin/article/new.html.haml
-- 规格/请求/article_products_spec.rb
测试响应
由于这个失败,我想也许我应该在访问页面之前设置 cookie,但是当我在 Capybara 脚本中使用“访问”之前使用 page.driver.set_cookie 命令时,它实际上并没有设置任何东西. 从这个修改后的代码块和这个结果集可以看出。
-- 规格/请求/article_products_spec.rb
测试响应
我还尝试使用外部 cookie 文件将 phantomjs_options 块传递给 poltergeist 驱动程序。这实际上似乎让我走得更远,但我最终得到了一个空 cookie_jar。您可以在下面看到此尝试:
--spec/spec_helper.rb
--cookies.txt
测试响应 F
capybara - Capybara poltergeist phantomjs JavascriptError on Audio
我遇到了一个例外:
Capybara::Poltergeist::JavascriptError
和调试输出:
"args"=>[[{"message"=>"ReferenceError: 找不到变量:音频"
这个问题是由于 sencha 2.0 使用 phantomjs 来解决依赖关系。Phantomjs 不支持 HTML5 音频 API。
问题是:如何在使用 capybara/poltergeist 时忽略 javascript Audio 类型的 javascript 错误?
我试过了
但是访问方法会抛出错误。
ruby-on-rails - “未定义”不是对象(评估“action.handler”)
我正在使用带有 rails 和 poltergeist 的 ember 进行测试!
在我升级到 ember-pre2 后,它在开发中工作得很好,但是在一次测试中关闭 ember 视图时会引发以下错误!
这就是ember.js 中的https://github.com/emberjs/ember.js/blob/v1.0.0-pre.2/lib/ember.js#L12330行,我不知道为什么会发生这种情况.. 当点击“X”只有一个简单的transitionTo!
ruby-on-rails-3 - Rails Phantomjs、poltergeist 和 Capybara 不能很好地配合
在 rails 3.1.2 项目(mac OS X)中工作,我正确安装了 PhantomJS(我可以运行如下代码,它运行良好,准确地抓取页面标题并保存准确的屏幕截图)
try_phantom.coffee
但是,当我尝试在 rspec 中使用 capybara/poltergeist 时,如下所示:
spec_helper.rb
然后使用需要javascript的调用规范:
缔约方规范.rb
我的javascript似乎没有被渲染,而且截图总是空白!
我已经尝试过调试器,但这似乎也带来了一个空白的 HTML 页面(只是带有空头和正文标签的 html)
我很确定问题出在 capybara 和 poltergeist 或(更有可能)poltergeist 和 phantomjs 之间的接口。以下是相关 gem 的版本:
capybara 1.1.3 capybara
-webkit 0.13.0
poltergeist 1.0.2
phantomjs 是 1.7.0
不知道如何进一步排除故障......任何帮助将不胜感激。
ruby-on-rails-3 - 包括 Capybara::DSL 会使我的所有测试都因错误数量的参数而崩溃
我仍在尝试解决这个问题中概述的基本问题:Rails Phantomjs, poltergeist, and Capybara not playing well together
基本上我的所有测试都运行良好,但我无法从我的 rspec 测试中使用 PhantomJS / Poltergeist / Capybara 获得有效的屏幕渲染。
使用@theSociable.me 提供的小脚本(如果我单独运行该测试),我可以通过 Poltergeist/Capbybara 获得我的一个屏幕的渲染!伟大的!
但是,当我将行include Capybara::DSL添加到我的测试中时,它们都开始失败并出现以下错误:
其中,如果我遵循回溯:
我的访问 signin_path行似乎有问题
..任何想法为什么将 Capybara::DSL 包含到我的项目中突然导致所有这些围绕身份验证/登录的大规模失败?
谢谢!
select - Capybara nested_form Poltergeist 选择动作
我正在使用奇妙的nested_form gem 来处理我的嵌套属性,它工作得很好。
当我尝试使用 Capybara/rspec 和 Poltergeist 作为驱动程序在我的嵌套表单的选择字段上运行一些集成测试时,就会出现我的问题。
我的测试如下。
我在 rspec 中收到以下错误
当我在尝试查找“select:last”之前打印 html 内容时,我能够看到正确的 html。贴在下面。
我使用的是 find,而不是 fill_in,因为我的 html 是动态生成的,时间戳附加到 id 和 name 字段。
值得一提的是,我尝试像这样使用 Capybara 的 select Action 时运气不佳。
失败并出现以下错误。
Capybara 出于某种原因无法找到标签,可能是因为它隐藏在实际形式中。
ruby-on-rails - 用于测试 Rails 应用程序的 Rspec 选项
运行规范时,我也得到了数据库事务的所有输出:
这噪音太大了!如何禁用/减少它?
如果有帮助,下面是我的 spec_helper。
database - 如何让我的 Capybara 规范创建数据库记录,使用 Google 登录,然后查看显示的这些记录?
问题:我需要设置什么才能编写 RSpec/Capybara 测试,这些测试涉及使用 Google 登录并以某种方式与数据库交互(通过应用程序或代码),然后成功地看到这些交互的结果反映在应用程序?
具体来说,我想要一个执行以下操作的规范:
Projects
在数据库中创建一些- 导航到项目索引(这会将我重定向到 Google 进行登录)
- 通过 Google 登录并允许我的应用访问
- 断言
Projects
出现在页面上
还有一个是这样的:
- 导航到项目索引(这会将我重定向到 Google 进行登录)
- 通过 Google 登录并允许我的应用访问
- 单击“添加项目”(将我重定向到表单)
- 填写表格并点击保存(将我重定向到索引)
- 断言新创建
Project
的出现在页面上
我为此编写的测试不起作用。
第一次尝试(使用“标准”RSpec/Capybara/Selenium)
我已经js: true
设置了适当的块并围绕每个规范describe
切换连接设置。WebMock
两个测试的最后一步都失败了。第一个只是没有显示任何项目。我可以puts Project.count
在断言页面上出现一些项目之前,我会看到一个非零数字,但页面上仍然没有显示任何内容。第二个测试的最后一步导致内部服务器错误。
基于此,似乎存在一些与数据库相关的问题
第二次尝试(添加一些数据库配置)
添加DatabaseCleaner.strategy = :truncation
到spec_helper
以及插入RSpec
配置块的以下代码:
与第一次尝试的结果相同。
第三次尝试(使用 Poltergeist 而不是 Selenium)
我安装phantomjs
、添加poltergeist
到我的 Gemfile 并捆绑。在spec_helper
我需要capybara/poltergeist
并设置Capybara.javascript_driver = :poltergeist
. 这似乎使事情变得更糟,因为我无法再通过允许访问的步骤,因为单击该按钮似乎什么也没做(或者驱动程序根本没有单击该按钮)。
附加信息
为了让我的测试开始工作,我必须做的第一件事是修复 Capybara 服务器上的端口,因为 Google API 需要预先注册的回调 URL。这很容易通过设置来Capybara.server_port = <some_number>
完成spec_helper.rb
。
我的控制器规格通过就好了,当我在现实生活中使用该应用程序时,它运行良好。这是第一个测试的代码(稍作修改的版本):