Capybara 无法识别 ajax 加载的元素。?
Posted
技术标签:
【中文标题】Capybara 无法识别 ajax 加载的元素。?【英文标题】:Capybara not able to recognize ajax loaded elements.? 【发布时间】:2012-05-30 13:23:28 【问题描述】:在我的 Rails 3 应用程序中,我的 html 页面上有一个“image”,它在 html 中创建了一个“div”元素页面,当点击时。
我必须通过 RSpec 测试这个新“div”的创建(并且我正在使用 Capybara 进行基于视图的测试)。
我写了以下代码:
it "clicks the extended details button" do
Capybara.default_wait_time = 5
within('.table_expand') do
find("#img_dealer_code_04039").click
should have_selector('#extended_details_04039')
end
end
是的,我已经在对应的describe
中添加了:js=>true
。
我认为问题出在 Ajax 时间,所以我添加了 Capybara.default_wait_time = 5
以使其正确加载。 (但它没有工作)
我还尝试将 :visible=>true
放在应该 have_selector('#extended_details_04039')
的行中,但没有成功..
我有什么遗漏的吗??
请帮帮我...我被这个困扰了很长时间..!!
【问题讨论】:
你用的是哪个capybara驱动? selenium.. 但我也尝试过使用 webkit..!! 【参考方案1】:https://github.com/rspec/rspec-rails/issues/478
您确定站点上没有重复的 ID 吗? 尝试将其保存到文件并检查来源是否有重复。
要查看页面上发生的情况,请尝试 page.save_and_open_page 方法
【讨论】:
不,我在 html 中没有任何重复的 ID。不过我会尝试保存并打开页面的方法。【参考方案2】:img 是您 ID 的一部分还是标签类型?我相信你应该有
find("img#dealer_code_0409").click
【讨论】:
我认为图像上的“点击”是有效的。因为那行没有错误。但由于“div”是动态生成的,它无法识别它。跨度>以上是关于Capybara 无法识别 ajax 加载的元素。?的主要内容,如果未能解决你的问题,请参考以下文章
capybara webkit 无法加载 mailto url
打开Chrome浏览器时,Capybara无法加载或添加扩展程序
Cucumber 和 Capybara,单击非链接或按钮元素