问题标签 [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.
rspec - Datatables.net 和 rspec,测试完成处理
我正在使用 capybara 和 phantomjs (poltergeist)。似乎使用该驱动程序 capybara 并不总是等到 ajax 处理完成,所以我随机获得红色规格。有什么方法可以在 rspec 中测试数据表是否已完成加载记录?
cucumber - 使用 javascript 设置 cookie 在 Poltergeist 和/或 PhantomJS 中不起作用
我有一个设置 cookie 的网页document.cookie = value
,它在服务器上运行时可以完美运行。
但是,在我的黄瓜测试中(使用 Poltergeist/PhantomJS),cookie 不会从一页持续到下一页。
测试流程为:
- 页面 A 打开
- 用户点击一个按钮,触发 JS 设置 cookie
- 用户点击页面 B 的链接
- 页面 B 有一个反映 cookie 值的组件
在针对正在运行的服务器的真实浏览器中,这很好。
但是在 cucumber 中,第 4 步的显示显示它看到的是一个空白 cookie。
有谁知道我该如何解决或调查这个问题?
javascript - 这只水豚会测试片状吗?
在使用 capybara-webkit 或 poltergeist 测试 JavaScript 行为时,我经常发现(或者不幸的是,编写)看起来像这样的测试
...选中复选框会发出一些 AJAX 请求,该请求会保存允许在快速重新加载后对其进行检查的任何状态。
该测试似乎肯定会失败,因为如果 AJAX 请求在第二次visit '/somewhere'
发生时未完成,它将加载处于错误状态的复选框。
幸运的是,在这个页面上还有一个微调器在复选框请求完成时旋转,所以我可以像这样修改测试
不过,我仍然有点偏执:如果page.check
线路运行但没有像线路active
之前那样设置微调器page.should have_css
,那么该线路甚至会在请求开始之前成功。
鉴于复选框触发的 JavaScript 设置了active
类,我能保证这个测试永远不会失败吗?
ruby-on-rails - Capybara、capybara-webkit及自定义文件上传表单
我使用以下 html 堆栈创建了自定义上传表单:
文件字段通过具有display: none
属性的 css 隐藏。因此,当她单击标签(自定义样式)时,用户会调用文件附加对话框。
在我的功能测试中,由于输入字段被隐藏,我无法附加文件。我尝试了一些可能的解决方案,但它们都不起作用:
或者
还有许多其他人。一直以来,我都会遇到 Failed to click element at unknown position 错误。一旦我删除了与输入字段重叠的标签,使其可见并运行我的规范,一切都通过了。所以这里的问题是:
- 输入文件字段具有
display: none
属性(因此无法找到) - 有一个标签与隐藏文件字段重叠(可能)
有没有办法让 Capybara 和 Capybara-webkit 驱动程序以某种理智的方式处理这种微妙的情况?
ruby - Capybara 与 PhantomJS / Poltergeist:从下拉列表中选择值不会触发 Ajax 调用
出于非商业目的,我正在尝试构建一个刮板。我以前使用过 PhantomJS,它通常就像一个魅力。但是,我偶然发现了以下问题:
我想做的事:
- 访问http://de.soccerway.com/national/germany/bundesliga/2010-2011/regular-season/r11840/
- 单击“每个 Spieltag”按钮
- 然后从包含比赛日的下拉菜单中选择一个选项
- 等待 Ajax 调用完成,然后获取我需要的信息
不幸的是,我可以选择我想要选择的选项,但之后没有任何反应。我创建了一个迷你脚本来演示这种行为:
如果对比之前和之后的截图,你会看到下拉菜单的数量发生了变化,但表格的内容没有变化。此外,下拉菜单没有显示在正确的位置,而是显示在屏幕截图的左上角。
如果我使用 Selenium 作为我的默认驱动程序,那么它可以工作,但我宁愿使用 PhantomJS,因为根据我的经验,它要快得多。
如何让 PhantomJS 触发 Ajax 调用?
我使用 PhantomJS 1.9.1、Capybara 2.1.0 和 Poltergeist 1.3.0
ruby-on-rails-3.2 - Rails:Poltergeist 似乎没有找到一个完全正常工作的 phantomjs
我创建了一个小型 Rails 应用程序,它使用 poltergeist 和 Capybara 定期检查我的一个网站的内容。在我的 Mac 上的开发中一切都很好。但是当我在我的生产服务器上测试它时,我得到了以下服务器。
Capybara::Poltergeist::PhantomJSFailed(PhantomJS 返回非零退出状态 127。确保 phantomjs 在您的系统上成功运行。您可以通过运行phantomjs
应该为您提供 Javascript REPL 的命令来测试它。):
Phantomjs 工作。我已经从命令行对其进行了测试。更让我困惑的是,当我从生产服务器上的 rails 控制台运行我的方法时,它也可以工作。
任何想法?
ruby - Poltergeist and Capybara can't open page by its url, returns about_blank
I am using Capybara 1.1.4 with poltergeist as PhantomJS driver. When I run this code on ruby:
I get 'about_blank'. It happens when I open specific dev environment. With other sites' urls it works great. Maybe someone knows how to fix it?
ruby-on-rails-3 - 使用 Poltergeist 运行 Capybara 时如何获取当前主机名和端口?
我有一个测试程序,它通过向 Rails 服务器发送数据块来模拟用户的 iOS 设备。该程序在测试之外运行良好。在测试中,由于找不到服务器,程序立即超时。
我的配置,在 env.rb 中:
在测试中,我尝试过类似的东西
等等,但这些都是空白的。正在做:
放 Capybara.current_session
产生一个内存地址,所以我知道当前会话正在工作。
这是在 gemfile 中设置的 Capybara :
我已经看到了几个基于此的问题,但他们的答案对我不起作用。具体来说,Capybara 似乎没有像我指定的那样设置当前主机或 url,它实际上也不允许我查看当前会话的内容。那么我该如何解决这个问题并指定一个特定的端口和 url?
ruby-on-rails - 使用 rspec、capybara 和 poltergeist 的测试返回空 html 和空屏幕截图
所以我已经为此苦苦挣扎了很长一段时间,我似乎无法弄清楚我们出了什么问题,也找不到太多可能导致这个问题的原因。
我对 Ruby 和 Rails 以及测试/行为驱动的开发相对较新,并且正在尝试使用 Rspec 和 Capybara 通过 Poltergeist 使用 PhantomJS 编写一些验收(浏览器)测试。我相信有些人也称此为集成测试(他们可能是从某种角度来看),但这是另一回事。
我有一个非常简单的功能,我无法做我想做的事:
所以。很简单,对。它应该只是/login
将 HTML 内容扔给我,我也想使用 来查看页面save_and_open_page
,并且我希望它截取屏幕截图。为了让测试失败,我添加了一个简单should have_selector
的方法,试图获得更多反馈。
my 的相关内容feature_helper.rb
:
还有我的spec_helper.rb
:
这一切都相当简单。
现在,在我的控制台中,我看到以下内容:
此外,屏幕截图只是一个白色的空白页面。当我跟踪我的log/test.log
文件时,我没有看到正在执行请求。我尝试将方法更改visit
为get
,这将发出请求,但不会更改任何结果。
我已经完全没有想到这可能是什么,这相当令人沮丧:(
然后是关于版本的最终信息:
- rspec 2.10.0
- 水豚 1.1.4
- 闹鬼 1.0.3
- 红宝石 1.8.7
- 导轨 3.2.13
不幸的是,我们仍处于 ruby 1.8.7,但正在努力提高该版本。不过,我认为这不应该影响测试。
任何帮助将不胜感激!
ruby-on-rails-3 - click_on 和 click_link 的区别?
我正在编写请求规范,我正在使用 poltergeist-1.0.2 和 capybara-1.1.2。我有以下代码:
登录有闪烁消息,向用户显示他已成功登录。当我使用 click_link 时,规范失败,因为 Capybara 找不到元素“虚拟终端”,但是当我使用 click_on 时,一切都通过了。“虚拟终端”不是按钮,而是链接。
click_on 和 click_link 有什么区别。