问题标签 [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 回答
1123 浏览

fonts - Capybara 与 Poltergeist (PhantomJS) 无法正确呈现页面和字体

里面的设置spec_helper.rb是:

然后在scenario我有:

还有一件事。字体不好。我使用的是 Google 字体,但它仅在 Poltergeist 中无法正确呈现。

结果,整个页面看起来都坏了。我错过了一些配置吗?

0 投票
1 回答
794 浏览

ruby-on-rails - Capybara.javascript_driver = :poltergeist 在测试期间不显示浏览器

我正在尝试使用 poltergeist 进行测试,但是当我运行测试时没有显示浏览器。

这是我的spec_helper.rb

我不知道我是否正确设置Capybara.javascript_driver

0 投票
1 回答
911 浏览

ruby-on-rails - 使用 Capybara/Poltergeist 时,如何使用 pry 访问应用程序线程

我在 rails 和 emberjs 应用程序上运行测试,并在我的测试中设置了 :js => true 。我可以在规范中删除 binding.pry 并且它会弹出打开 REPL 就好了,但是如果我在应用程序中删除 binding.pry,REPL 将显示在控制台中,但规范继续。我相信,这是因为使用 poltergeist 作为驱动程序,capybara 在一个线程中运行规范,而在另一个线程中运行应用程序。有没有办法进行设置,以便我可以在应用程序代码中使用 binding.pry 打开 REPL 并暂停应用程序和规范?

这是一个运行良好的 binding.pry 语句的示例,并且被遗忘了:

作品:

employee_signs_in_spec.rb

被抛在后面:

session_controller.rb

0 投票
3 回答
2293 浏览

ruby - 使用 Poltergeist 时如何获取元素的 HTML?

我正在使用 Capybara 和 Poltergeist 驱动程序。我的问题是:如何获取节点的 HTML(字符串)?

我读过使用 RackTest 驱动程序可以得到它:

但是#native在节点上调用 Poltergeist 会返回 a Capybara::Poltergeist::Node,而不是本机 Nokogiri 元素。#native然后再次调用Capybara::Poltergeist::Node返回相同的结果Capybara::Poltergeist::Node(即返回self)。

不得不从整个页面中查看 HTML 以找到我正在寻找的内容变得有点烦人:P

0 投票
0 回答
294 浏览

ruby-on-rails - Capybara + Rspec + Poltergeist:找不到字段,我的页面中有疯狂的 javascript,我的实际页面带有 iframe

更新:我刚刚尝试了 capybara-webkit 驱动程序......

并做了一个puts page.html ...并得到了非常奇怪的链接

到底是怎么回事?!我的应用程序中没有广告.. 我不会因为链接到 msn 或 yahoo 而被抓到。


我有这个:

需要“spec_helper”

功能“无需 Javascript 即可跟踪”,js: true do

输出看起来像这样:

这是什么?为什么会这样?

Capybara::ElementNotFound当我尝试使用它时fill_in

0 投票
1 回答
1219 浏览

javascript - 为什么在 Chrome 中有效的正则表达式在 Poltergeist/PhantomJS 中无效?

我对一些旨在解析链接的 javascript 有疑问(以便在适当的情况下嵌入视频播放器)。在 Chrome 中手动测试时它可以正常工作,但是当我在不同的浏览器中运行自动化测试套件时,它就不行了。

原来的 ( urlVimeo0) 在 Chrome 中工作,但是当我使用 Poltergeist 作为测试套件的一部分运行它时,当位之后有任何内容与数字匹配时,什么都不起作用。两者都是基于 webkit 的,所以我不知道为什么美元/斜线会导致失败。

0 投票
0 回答
1463 浏览

ruby-on-rails - 如何使用 Cucumber 测试拖放文件上传?

我有一个 HTML 编辑器,它接受拖放文件和图像上传。我需要测试这是 Cucumber(使用 Capybara 和 Poltergeist),但我找不到任何说明如何做的东西。我发现 Capybara 有拖放支持,但它只提到找到现有的页面元素并拖动它们。我需要将文件发送到尚不存在的浏览器。

编辑器有一个 contenteditable div,它拾取文件,然后通过 JS 将其发送到 S3。

0 投票
2 回答
2209 浏览

rspec - Capybara 1.1.4 -> 2.1.0 升级导致 Poltergeist “ObsoleteNode”错误

我有一个运行 Poltergeist 1.0.2 的 Capybara 1.1.4 测试套件,在 PhantomJS 1.9.2 上运行

今天我尝试将 Capybara 升级到 2.1.0 和 Poltergeist 到 1.4.1。大多数测试都有效,但是启用 js 的测试中的一堆 page.find() 元素在 .click 时返回以下错误:

Capybara::Poltergeist::ObsoleteNode:您尝试与之交互的元素不是 DOM 的一部分,或者当前在页面上不可见(可能显示:未设置)。该元素可能已被另一个元素替换,并且您打算与新元素进行交互。如果是这样,您需要进行新的“查找”以获取对新元素的引用。

奇怪的是:

  • page.find('#my-element') 找到元素就好了
  • page.find('#my-element').value 返回正确的值

  • page.find('#my-element').click 返回上述“ObsoleteNode”错误。

有没有人见过这个?我花了几个小时研究我能想到的每一个疯狂的理论,但没有什么能让元素点击。(旁注:“#my-element”只是一个例子。有许多不同的元素具有许多不同的 ID,它们无法 .click)

任何想法表示赞赏。

0 投票
1 回答
3876 浏览

ruby-on-rails - 水豚 poltergeist 点击不工作

我不知道如何在 capybara poltergeist 中单击链接 href,我的测试中有这样的示例代码

在我的 html 中,我有这样的示例

如何单击水豚 poltergeist 中的链接?我已经尝试过“click_link”、“click_button”和其他任何方法,但仍然无法正常工作

0 投票
1 回答
1968 浏览

poltergeist - 使用 Poltergeist,Phantom JS 实例不会在每次 rspec 运行期间退出

在 rspec 执行的每个 poltergeist 测试中,如果我使用以下命令创建新会话:

Capybara.session_name="some_session_name"

phantomjs 实例作为子进程启动,并且在测试结束之前永远不会退出,从而导致我的构建服务器上出现 OOM。

我相信这是由于未能调用 driver.quit,如Poltergeist 自述文件中所述:

如果您手动运行几个 capybara 会话,请确保您在不再需要会话时调用了 session.driver.quit。忘记这一点会导致内存泄漏,并且您的系统资源可能会比您预期的更早耗尽。

但是,我调用page.driver.quitafter我的测试块。

下面是我的后块代码。 $adhoc_sessions是我每次设置时填充的全局变量Capybara.session_name,其值与设置的值匹配Capybara.session_name

关于我可以在这里做得更好的任何建议?我没有调用一些清理命令吗?