问题标签 [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.

0 投票
1 回答
435 浏览

selenium - Capybara 规范在单独运行时通过,但在作为套件的一部分运行失败时失败

任何人都知道为什么请求规范在运行时从不通过bundle exec rspec spec但在直接运行时通过的任何特殊原因bundle exec rspec spec/requests/models_spec.rb

我已经在 selenium 和 poltergeist 中尝试过规范,但得到了相同的结果。当我运行整个测试套件时,规范失败,当我单独运行它时,它通过了。

我有一个关于模型规范的相关问题为什么 RSpec 会报告同一类型的多个验证错误?这可能是相关的。

0 投票
2 回答
3117 浏览

ruby - 在 Ubuntu 12.04 上访问登录页面时出现 Poltergeist 超时错误

给定Ubuntu 12.04,Poltergeist 0.7.0和一个规范(仅使用普通的旧orPhantomJS 1.6.5传递),我在尝试访问页面时收到以下错误:capybara webkitselenium

同样的命令也在 Mac 10.7 上本地传递。

有任何想法吗?

0 投票
1 回答
4928 浏览

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

0 投票
2 回答
1339 浏览

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 错误?

我试过了

但是访问方法会抛出错误。

0 投票
0 回答
497 浏览

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!

0 投票
3 回答
11612 浏览

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

不知道如何进一步排除故障......任何帮助将不胜感激。

0 投票
1 回答
533 浏览

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 包含到我的项目中突然导致所有这些围绕身份验证/登录的大规模失败?

谢谢!

0 投票
0 回答
940 浏览

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 出于某种原因无法找到标签,可能是因为它隐藏在实际形式中。

0 投票
2 回答
681 浏览

ruby-on-rails - 用于测试 Rails 应用程序的 Rspec 选项

运行规范时,我也得到了数据库事务的所有输出:

这噪音太大了!如何禁用/减少它?

如果有帮助,下面是我的 spec_helper。

0 投票
0 回答
348 浏览

database - 如何让我的 Capybara 规范创建数据库记录,使用 Google 登录,然后查看显示的这些记录?

问题:我需要设置什么才能编写 RSpec/Capybara 测试,这些测试涉及使用 Google 登录并以某种方式与数据库交互(通过应用程序或代码),然后成功地看到这些交互的结果反映在应用程序?

具体来说,我想要一个执行以下操作的规范:

  1. Projects在数据库中创建一些
  2. 导航到项目索引(这会将我重定向到 Google 进行登录)
  3. 通过 Google 登录并允许我的应用访问
  4. 断言Projects出现在页面上

还有一个是这样的:

  1. 导航到项目索引(这会将我重定向到 Google 进行登录)
  2. 通过 Google 登录并允许我的应用访问
  3. 单击“添加项目”(将我重定向到表单)
  4. 填写表格并点击保存(将我重定向到索引)
  5. 断言新创建Project的出现在页面上

我为此编写的测试不起作用。

第一次尝试(使用“标准”RSpec/Capybara/Selenium)

我已经js: true设置了适当的块并围绕每个规范describe切换连接设置。WebMock两个测试的最后一步都失败了。第一个只是没有显示任何项目。我可以puts Project.count在断言页面上出现一些项目之前,我会看到一个非零数字,但页面上仍然没有显示任何内容。第二个测试的最后一步导致内部服务器错误。

基于此,似乎存在一些与数据库相关的问题

第二次尝试(添加一些数据库配置)

添加DatabaseCleaner.strategy = :truncationspec_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

我的控制器规格通过就好了,当我在现实生活中使用该应用程序时,它运行良好。这是第一个测试的代码(稍作修改的版本):