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 加载的元素。?的主要内容,如果未能解决你的问题,请参考以下文章

jQuery:更改加载了 ajax 的元素上的 CSS?

capybara webkit 无法加载 mailto url

打开Chrome浏览器时,Capybara无法加载或添加扩展程序

Cucumber 和 Capybara,单击非链接或按钮元素

在 IE 的 jQuery Ajax 成功函数中无法识别选择器

Capybara Element not found 错误,即使元素存在