在我的Rails4 / rspec应用程序中,我需要男性Capybara点击没有正式的#34;链接" ,使用数据目标属性。
HTML
<div class="info-zone">
<span data-target="#myInfoZone1" class="City" data-toggle="modal">
</span>
</div>
我目前使用capyabar的尝试失败
describe "modal loads with the right content" do
it "has right text" do
visit actual_page_path(:id => @deal.id)
find("span[data-target='#myInfoZone1']").click
end
我目前收到此错误
Capybara::ElementNotFound:
Unable to find css "span[data-target='#myInfoZone1']"
我怎样才能制作水豚&#34;找到&#34;并单击区域?
感谢您的帮助
修改
我发现为什么水豚没有找到它!
有一个我无法理解的原因,那就是capybara找到的html输出代码
<!-- city zone -->
<div id="city-zone">
<!--
We gather here the various types of <spans> and load it via javascript
we append it to the the div id=city-zone
-->
</div>
我正在使用javascript加载这个div。所以当我加载“页面来源”时我看到上面的内容
但是当我使用chrome dev工具时,我看到了:
<!-- city zone -->
<div id="city-zone">
<div class="info-zone">
<!--
We gather here the various types of <spans> and load it via javascript
we append it to the the div id=city-zone
-->
<span data-target="#myInfoZone1" class="City" data-toggle="modal">
</span>
</div>
</div>
所以我猜Capybara看到的东西和我在加载页面源时看到的一样:没有。 为什么我追加的javascript没有出现在html代码源中?
如何处理水豚工作
答案 0 :(得分:1)
Capybara的默认驱动程序仅测试后端应用程序服务器呈现的html。如果你想用前端javascript测试页面,你应该在Capybara上使用支持javascript的驱动程序。
幸运的是,thoughtbot的人们为Capybara-webkit做了一个Capybara扩展。你可以轻松地将它安装在你的Gemfile中。按照here说明安装gem。
最后,安装后,您可以在功能/方案中添加 js:true ,在功能规范中启用javascript测试,如下所示:
RSpec.feature "test my new feature", js: true do
# my test
end