问题标签 [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.
ruby-on-rails - 使用多个 VCR 磁带测试 javascript 刷新
我正在使用 Capybara 和 Poltergeist 测试使用 setTimeout 定期刷新页面内容的索引页面。页面内容根据外部服务在三种状态之间转换,我为每种状态准备了一个磁带。
我正在尝试使用如下代码测试刷新:
第一个have_content
成功,但第二个没有。Capybara 应该等待任何异步调用返回并更新 DOM,以便这些断言通过。我试图在 ajax 调用返回后using_wait_time
强制断言等待很长时间,但这没有帮助。关于我的规范中可能缺少什么来完成这项工作的任何想法?该功能在浏览器中运行;只是没有通过的测试。
ruby-on-rails - Rspec+Capybara 可选更改 JS 驱动
我将 poltergeist/phantomjs 用于 CI,但我希望能够有选择地将 JS 驱动程序更改为 selenium 以在本地观看我的测试运行。理想情况下,我希望为此默认 poltergeist 有一个命令行标志,但能够运行 rspec --driver=selenium (或类似的东西)
有任何想法吗?
ruby-on-rails - Capybara - assert_selector("tr#1234") 不起作用,但 find_by_id(1234) 起作用
做有效的可能原因是什么page.find_by_id(id)
,但做page.assert_selector("tr##{id}") returns a
Capybara::ElementNotFound`?
作为背景,我正在为 Capybara 使用Poltergeist驱动程序。
我的 HTML 结构如下:
page.driver.debug
通过使用Poltergeist 的功能并查看测试生成的实际 HTML ,我已确认我的 HTML 按预期出现。
当我在测试中加入这样的内容时,我收到一条Capybara::Poltergeist::InvalidSelector
错误消息The browser raised a syntax error while trying to evaluate the selector
。
执行此操作时我也遇到错误:
但是,使用find_by_id
作品:
根据我对Capybara的理解,不应该这样。难道我做错了什么?
cucumber - 列出 Capybara/Poltergeist 元素的子元素
我已经四处搜索,但找不到这样做的方法。
我们在 EmberJS/Rails 应用程序的黄瓜功能中使用 Poltergeist 驱动程序运行 Capybara 测试。我无法使用 page.driver.debug,因为我在无头 vagrant 实例中运行,因此我无法进行故障排除,但屏幕截图有效,并且在相关页面上检查的 Chrome 开发工具显示了正确的元素。
我有一个失败的黄瓜场景,这是因为查找不起作用。我的测试如下所示:
它找不到有问题的元素。这是 DOM 的相关部分:
如果我添加一个 binding.pry,这个:
给我这个回应:
和这个:
给我这个回应:
但完整的发现:
给我这个回应:
我有一种感觉,这是一个父母/兄弟姐妹的问题,但我无法解决它。所以我想我有几个问题:
- 对于调试,是否有一个 poltergeist 驱动程序来列出所有子元素?
- 我的 xpath 选择器有问题吗?
..
返回的事实Capybara::Element tag="div"
使我认为我有正确的父元素(就像我说的,它在其他类似测试中的其他页面上也可以使用),但我无法验证它是哪个元素。我找不到如何获取 xpath 或其他任何可以帮助我识别元素的方法。
ruby-on-rails - 为什么 Capybara 在一个事件后放弃我的会话?
测试适用于大多数控制器的 Rails 应用程序before_filter :authenticate_user!
,我无法让 Capybara 保留会话。
我使用 PhantomJS 和 poltergeist 配置了 Capybara。
我使用以下助手:
我有以下规格文件:
当我按照此处所示运行测试时,它将通过。但是,如果我在执行 AJAX 操作的某个东西上调用 a click_link
,或者我只是尝试执行visit '/tasks'
两次,则should
断言将失败,因为我将被重定向到应用程序的登录页面。
我尝试了几种不同的方法,包括设置Capybara::Session,但我仍然在 AJAX 请求中收到 401 代码,并且每个规范只能成功访问一次。
我究竟做错了什么?
ruby-on-rails - Capybara 规格在不同服务器上失败
我最近将 mi CI 服务器(Teamcity)移到了另一台具有相同配置和非常相似操作系统的强大机器上。
从那以后,我的一些集成规范开始失败。我的设置非常标准,Rails 3 + capybara + poltergeist + phantomjs。
失败是确定性的,它们总是会发生,并且总是与 DOM 中一些缺失的节点有关。此外,故障发生在具有相似设置的不同项目中,因此与项目配置无关。capybara 1.x 和 capybara 2 都会发生这种情况。
这是最简单的失败规范。请注意,此规范无需 javascript 即可运行,因此该问题也存在于仅机架规范中。
我试过的:
- 在不同的机器上运行规范,它们可以在每台开发机器上运行,也可以在登台服务器上运行。即使在 CI 环境之外,我也只能在 CI 机器上重现故障(即通过命令行运行规范)
- 增加到
Capybara.default_wait_time
一个荒谬的20
- 尝试在上
page.should have_content
线前进行残酷的睡眠 - 在 CI 机器上升级 RVM、ruby、capybara、poltergeist 的最新版本。
- 将teamcity升级到最新版本
我发现的最奇怪的事情是当我save_page
在失败行之前添加了一个调用。如果我在我的机器上运行规范,然后在服务器出现故障的 CI 上运行并比较这两个文件,结果是这样的:
这是导致规范失败的两个缺失部分,因此提交了表单,控制器操作成功运行,但缺少两个 dom。这怎么可能?为什么这只发生在一台机器上?
作为记录,这两个 DOM 是使用标准 rails 工具添加的,其中一个是
另一个是分析宝石
capybara - 运行规范时出错:Poltergeist 使用 CSS 选择器检测到另一个元素
我在我的 Gemfile 中添加了 activeadmin。
我跑了:
然后我跑了:
我得到了这个错误:
我尝试按照本文中的建议排除 activeadmin js 和 css ,但仍然出现错误。
有谁知道如何解决这个问题?
ruby-on-rails - 无法在 Rails 应用程序中连接 PhantomJS 和 Poltergeist
我已按照 Poltergeist github 页面上的说明进行操作,但我不断收到错误消息,指出我的 PhantomJS 版本错误。
具体来说,它说:
现在,我已经下载了 phantomjs v1.8.1(以及更高版本的 v1.9.2),所以版本是正确的。这真的让我发疯。我使用 Ubuntu 13.04,但我怀疑这就是原因。
谷歌搜索错误返回没有任何用处。
有任何想法吗?
ruby-on-rails - 使用 binding.pry 时如何指示 phantomjs 避免超时
在某些时候,我不知道你们是否称其为 REPL 驱动的开发或其他什么,但我发现自己通过binding.pry
在某些测试中插入调用来检查运行时的内容。这工作得很好,除非我正在运行 Cucumber 测试,因为我选择poltergeist
了作为我的capybara
驱动程序,它使用phantomjs
. 我可以启动 REPL,但一段时间后它被杀死并且我从 中收到超时错误phantomjs
,我想知道是否有办法解决这个问题,即使它包括切换到pry-remote
或类似的。这可能以前被问过,但我找不到答案。线索?
capybara - 使用 Capybara Poltergeist 测试 Pusher
我一直在尝试使用 Poltergeist 测试推送应用程序。到目前为止,我只在capybara-webkit
. 我创建了一个最小的示例应用程序,它在规范中演示了这一点。规范通过capybara-webkit
但失败了Poltergeist
。
我是否遗漏了什么,或者目前 Poltergeist 无法进行这种类型的 Pusher (WebSocket) 测试?
提前致谢。