2

对于严重依赖 javacript 的页面,我有一个集成测试失败。相同的页面在浏览器中运行得很好。将测试简化到最低限度,我发现仅测试页面加载后由 javascript 添加的选择器的存在会失败。

在预编译测试资产并使用 save_and_open_page 后,我发现 jQuery 就绪事件的处理程序在集成测试期间没有运行。

我没有找到任何关于这个问题的参考资料,所以我想我做错了什么。谁能帮我解决这个问题?

我正在使用 rails 3.2.11、RSpec 2.13.0、Capybara 2.0.3 和 capybara-webkit 0.14.2

4

2 回答 2

1

默认情况下,Rails 使用不处理 JS 的 webdriver。如果您想要 JS 支持,您需要使用一种 JS 感知驱动程序,例如 Selenium(运行全功能浏览器)、capybara-webkit 或 poltergeist(它们是无头 webkit 浏览器)。还有很多其他的,但这三个最受欢迎。

于 2013-04-11T16:36:38.007 回答
0

我通过检查我的 AJAX 请求为我解决了这个问题。问题是我请求的是“http://...”而不是页面的“/”。这意味着它引发了一个 CORS(“来自域外的 ajax 请求”),即使请求看起来像它来自域内部。

我最初的症状是“使用带有 Poltergeist 或 Selenium 的 Capybara 进行测试时,页面上没有插入 javascript 的 HTML 元素(但在运行应用程序时出现在页面上)。”

于 2015-11-16T20:18:22.293 回答