Javascript Capybara:Webkit找不到iframe或其内容

Javascript Capybara:Webkit找不到iframe或其内容,javascript,ruby-on-rails,tdd,cucumber,capybara,Javascript,Ruby On Rails,Tdd,Cucumber,Capybara,我允许用户与其他个人共享照片。当用户查看照片及其描述时,他们可以单击“共享”并加载新页面。在此页面上,填写电子邮件地址(以及可选评论-此处未测试),然后单击“共享照片”。系统向收件人发送包含链接的电子邮件,主题行包括照片的名称。带有共享表单的页面还显示照片已与之共享的个人列表 整页加载是用户投诉的一个来源。他们需要一个模式窗口来快速加载和最小化导航。我同意 我使用将共享页面加载到模式窗口中的iframe中。它工作得很好,如果需要,可以很好地回退到旧页面 但是,我就是不能通过考试。特别是,Capy

我允许用户与其他个人共享照片。当用户查看照片及其描述时,他们可以单击“共享”并加载新页面。在此页面上,填写电子邮件地址(以及可选评论-此处未测试),然后单击“共享照片”。系统向收件人发送包含链接的电子邮件,主题行包括照片的名称。带有共享表单的页面还显示照片已与之共享的个人列表

整页加载是用户投诉的一个来源。他们需要一个模式窗口来快速加载和最小化导航。我同意

我使用将共享页面加载到模式窗口中的iframe中。它工作得很好,如果需要,可以很好地回退到旧页面

但是,我就是不能通过考试。特别是,Capybara:Webkit无法找到iframe

环境是: 轨道3.0.9 水豚0.4.1.2 水豚网络工具包0.5.0 黄瓜1.0.2

黄瓜故事:

Feature: Share photo

@javascript
Scenario: User shares photo
  When I follow "Share"
  Then I should see "Share Old Man Photo" inside "#sb-player"
  And I should see information about who I've shared this photo with
  When I fill in "Share with" with "joe@example.com"
  And I press "Share Photo"
  Then "joe@example.com" should receive an email with subject "Old Man photo has been shared with you"
我的步骤:

Then %r{^I should see "([^"]*)" inside ([^"].*)$} do |expected_text, named_element|
  selector = element_for(named_element)
  within_frame selector do
    page.should have_content(expected_text)
  end
end
失败消息:

(::) failed steps (::)

Unable to locate frame.  (Capybara::Driver::Webkit::WebkitError)
./features/step_definitions/sharing_steps.rb:94:in `/^I should see "([^"]*)" inside "([^"]*)"$/'
features/user_shares_photo.feature:21:in `Then I should see "Share Old Man Photo" inside "#sb-player"'

Failing Scenarios:
cucumber features/user_shares_photo.feature:19 
我尝试了元素ID的每个组合。我只是无法让水豚:网络工具包识别iframe

有什么想法或解决方案吗?我不能在测试失败的情况下交付,我正在考虑推广整个iframe方法——但我想找到一个解决方案


谢谢

需要添加时间以允许iframe打开/填充。第五次睡吧

Then %r{^I should see "([^"]*)" inside ([^"].*)$} do |expected_text, named_element|
  sleep 5
  selector = element_for(named_element)
  within_frame selector do
    page.should have_content(expected_text)
  end
end

它是否适用于不同的Capybara驱动程序?我在Capybara 2.4.4和Capybara webkit 1.5.2中得到了一个
未定义的方法'element\u for'
错误。