问题标签 [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.
poltergeist - 在 Poltergeist 中使用填充渲染页面元素
我想用页面上下文截取元素的屏幕截图,比如说元素周围 10px。
在 PhantomJs 我会这样做
我没有clipRect
在 Poltergeist 中找到。
可以使用phantom.clipRect
吗?
谢谢
ruby-on-rails - 如何从黄瓜功能的会话中获取对象的 ID
因此,我正在为我的 Shops 购物车操作编写接受功能,并想验证单击该Edit Cart
链接是否会将我带到edit_cart_path
.
所以我有一个黄瓜步骤定义:
编辑页面 ( cart/123456/edit
) 上出现哪些错误,因为No route matches {:action=>"edit", :controller=>"Carts"}
我的路线应该是{:action=>"edit", :controller=>"Carts", :id=>123456}
购物车的 ID 在 session[:cart_id] 中,我无法在测试中访问它。
现在的问题是,我如何测试我在编辑页面上是否正确?
ruby - 最小 Capybara / Poltergeist 测试返回空白页面
看来我正在追溯 SO 帖子中采取的步骤: Capybara、Poltergeist 和 Phantomjs,并在 body 中给出了一个空的响应。(如果你愿意,可以将此标记为重复,但我包含了一个最小的独立测试用例和版本号。)
问题
我在做任何明显错误的事情吗?我可以运行另一个可能有助于隔离问题的最小测试吗?
文件:pgtest.rb当按如下方式调用时,它会打印一个空页面:
环境
- OS X 10.8.5 (12F45)
- 红宝石 2.0.0p247 (2013-06-27) [x86_64-darwin12.4.0]
- 幻影 1.9.2
- 水豚 (2.1.0)
- 恶作剧 (1.4.1)
赦免幻影
值得注意的是,我可以使用 phantomjs 从 www.google.com 提取 html:
文件:pjs_dump.js当我运行“phantomjs pjs_dump.js”时,它会打印来自 www.google.com 的 html,因此 phantomjs 似乎工作正常。
ruby-on-rails - 移动设备的功能测试条件页面内容呈现
我在 Rails 项目中使用Mobvious gem来确定用于访问页面的设备类型。我遇到问题的用户故事是:
- 移动设备上的用户在网站的移动版本上
- 移动用户单击“访问完整站点”按钮,将他们带到桌面站点
- 将一个
desktop
值放入会话中,以确保记录他们在移动设备上查看桌面站点的偏好(当移动用户首次访问移动设备上的主页时,他们会自动重定向到移动站点) - 在桌面站点主页上,移动设备用户可以看到“切换到移动站点”横幅,让他们这样做(桌面用户显然从未看到此横幅)
使用 Mobvious 实现条件渲染的代码很简单:
app/views/welcome/index.html.haml
代码本身按预期工作:问题是我想为此编写一个RSpec 功能测试,但我认为我似乎无法在我没有直接的 RSpec 功能测试场景中正确模拟移动用户代理访问 request
对象。我的理由是功能规范在这里比请求规范更合适,因为我正在测试页面上特定内容的存在。
到目前为止,从Mobvious gem 的帮助规范中获取线索,我已经request
在我的功能规范中删除了一个对象,该对象设置device_type
为:mobile
我想要的,但我似乎无法获得.switch-to-mobile-site-banner
要显示的内容:
规格/功能/mobile_navigation_features_spec.rb
期望失败,并且使用save_and_open_page
查看页面上呈现的内容没有显示横幅,我不知道为什么。当代码通过 Mobvious' 方法运行时,我似乎没有收到任何错误for_device_type
,所以我想也许在request
对象模拟中我缺少一些东西(?)。
我没有专门绑定到任何实现/测试类型,所以我对如何测试我想要的功能持开放态度。我最初认为rack_session_access
gem可以提供帮助,但除非我用错了,否则我不能用它来做我想做的事。
澄清:我正在为 Capybara 的 javascript 驱动程序使用Poltergeist 。
更新解决方案
我认为真正让我遇到这个问题的是,在mobvious-rails gem 中,当您想要获取 时device_type
,它会直接调用该request
对象,我想我需要对其进行模拟以使助手在我的规范中正常工作. 正如答案中所指出的那样,高级功能规范中的这种低级模拟是一种代码(规范?)气味,事后看来,我应该听过代码实际上告诉我我做错了。此外,出于某种原因,js: true
我什至没有想到在这种情况下添加,无论我是否在我的其他测试中使用过它。
我最终使用了Billy Chan和Kaleidoscope的部分答案来制定我喜欢的更简单和更清洁的解决方案:
规格/功能/mobile_navigation_features_spec.rb
由于 Kaleidoscope 是第一个提出一套工作规范的人,这让我花了大部分时间,我奖励他赏金,但我会接受 Billy Chan 的回答是正确的,因为我认为这是一个更“规范的解决方案,我将指导其他人在未来参考。
cucumber - Cucumber:使用 Poltergeist (PhantomJS) 禁用或删除本地存储
尝试禁用或删除 Cucumber 测试的本地存储。
我尝试了以下方法:
但我收到以下错误
poltergeist - 试图让简单的 poltergeist 示例运行
我正在通过 rspec 玩 selenium,但不满意,我看到了对 poltergeist 的建议。当我尝试用我的测试运行它时,似乎 poltergeist 驱动程序没有出现在它应该出现的位置。我有点困惑机架测试在哪里适合 poltergeist,但我尝试了很多不同的东西。然后我找到了这个简单的例子并试图让它工作但仍然没有运气。我在 Windows 上使用 jruby。
我正在使用此处找到的示例: https ://gist.github.com/pzol/1607842 我将所有代码移到一个文件中,这种情况下没有规范助手
我确实安装了 phantomjs 并为 phantomjs 运行了一个小小的 hello world 示例,它在我的路径中
jruby -S rspec poltergeist-test2.rb F
失败:
1) poltergeist 应该在 google Failure/Error 中找到 github poltergeist:访问 ' http://www.google.com/ ' NoMethodError: undefined method visit' for #<RSpec::Core::ExampleGroup::Nested_1:0x4324
4fd9>
# ./poltergeist-test2.rb:18:in
(root)'
在 0.01 秒内完成 1 个示例,1 个失败
失败的例子:
rspec ./poltergeist-test2.rb:17 # poltergeist 应该在 google 中找到 github poltergeist
cucumber - 每次使用 PhantomJS 运行测试后用户代理丢失
我正在编写一系列使用 Cucumber、Capybara、Poltergeist 和PhantomJS访问网站、登录并检查主页的某些特征的自动化测试。
在我的测试运行开始时,我写道:
page.driver.headers = { "用户代理" => "某事" }
并且对于第一个测试用例一切正常。但是,每个后续测试用例似乎都忘记了这个用户代理。这是预期的行为吗?我是否必须在每个测试用例之前设置用户代理?如果没有,我该如何解决这个问题?
谢谢
ruby-on-rails - Rspec + Capybara + Poltergeist 提交表单失败
我在使用tokenInput jQuery 插件的 Rails 应用程序中有一个表单。为了测试表单,我添加了 poltergeist 作为 js 驱动程序并添加js: true
到规范中。但是,一旦我在任何给定规范上启用了 javascript,该click_button
操作就什么也不做。我puts
在控制器的第一行放置了一个,它永远不会被执行。
该表单作为浏览器中的用户可以正常工作,并且测试在没有js: true
. 但是,如果没有启用 javascript,我将无法练习该tokenInput
领域。
没有错误信息;如果我的测试很简单:
它通过了;但是,永远无法到达控制器。
每次我使用 poltergeist 运行规范时都会收到这些警告:
2013-11-05 07:39:42.087 幻影 [5629:507] *警告:类 NSView 中的方法 userSpaceScaleFactor 在 10.7 及更高版本中已弃用。它不应该在新的应用程序中使用。使用 convertRectToBacking: 代替。2013-11-05 07:39:42.502 phantomjs[5629:507] CoreText 性能说明:客户端使用名称“Times New Roman”调用 CTFontCreateWithName(),并使用 PostScript 名称“TimesNewRomanPSMT”获取字体。为获得最佳性能,调用此 API 时仅使用 PostScript 名称。2013-11-05 07:39:42.502 phantomjs[5629:507] CoreText 性能说明:在 CTFontLogSuboptimalRequest 上设置断点以进行调试。2013-11-05 07:39:42.588 phantomjs[5629:507] CoreText 性能说明:客户端使用名称“Times New Roman”调用 CTFontCreateWithName(),并使用 PostScript 名称“TimesNewRomanPSMT”获取字体。为了获得最佳性能,调用此 API 时仅使用 PostScript 名称。2013-11-05 07:39:42.590 phantomjs[5629:507] CoreText 性能说明:客户端使用名称“Times New Roman”调用 CTFontCreateWithName(),并使用 PostScript 名称“TimesNewRomanPSMT”获取字体。为获得最佳性能,调用此 API 时仅使用 PostScript 名称。
我还尝试了 capybara-webkit 的规格,它每次单击表单按钮时都会死得很惨。它也从未击中控制器。
这是代码ProjectsController#new
Ruby 2、Rails 4、OS X Mavericks
selenium - 为什么 Poltergeist 在与 Guard/Konacha 一起使用时没有注册为 Capybara 的驱动程序?
在使用 Guard 运行的 Konacha 测试中,我无法使用 Poltergeist 作为 Capybara 的驱动程序。
我在 config/initializers/konacha.rb 中有以下内容:
我的测试在 Poltergeist 中成功运行bundle exec rake konacha:run
但是,当我使用以下 Guardfile 时:
Guard 在启动 Konacha 时抱怨:
14:18:05 - 信息 - 开始 Konacha
14:18:05 - 错误 -Capybara::DriverNotFoundError: 未找到名为 :poltergeist 的驱动程序,可用驱动程序: :rack_test, :selenium>
ruby-on-rails - How to run setup once for several "scenarios" in Rails Capybara test
Related to question: how to run capybara commands once, then run some tests
How do I set up a Capybara test to run part of the background just once and have the database records there for the scenarios in the test.
Note, I'm using database_cleaner between tests. Yes, I have some seed_tables, but I'd like to have a scope that is not global but just one file of integration tests.
Here's my setup for database_cleaner.rb: