Cucumber / Capybara have_selector无法找到添加了JQuery的span

时间:2013-05-24 17:38:44

标签: jquery ruby-on-rails cucumber capybara

我正在经历一个令人沮丧的问题,应该是一个非常简单的黄瓜测试。测试尝试提交一个简单的表单而不输入任何表单数据,并期望看到一条错误消息:

Given(/^a user visits the account confirmation page$/) do
  visit root_path
end

When(/^the user enters an improperly formatted email address$/) do
  click_button "START"
end

Then(/^the user should see an error message$/) do
  page.should have_selector("error")
end

错误消息元素由JQuery附加,并且给出了css类'error'。它附加到页面中的元素具有css类'Forms-TextError'。这个范围是基础html的一部分。

<span id="email_error" class="Forms-TextError">
  <span class="error" for="email">Please provide your contact email</span>
</span>

问题是have_selector找不到错误范围。它也找不到它的父跨度。人们会认为它适用于那种情况,因为该范围是基础html的一部分。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

问题在于:

page.should have_selector("error")

这一行(或css选择器)说该页面应该有一个“error”类型的元素,这个元素不太可能存在。

您应该将css选择器更改为以下之一:

#Find a span with class error:
page.should have_selector("span.error")

#Find any element with class error:
page.should have_selector(".error")