“然后我应该看到”Capybara步骤对范围过于具体

时间:2011-03-24 21:23:17

标签: cucumber capybara

我的网页上有一个<th>标记,其中包含“出勤”作为其CSS类。以下Cucumber步骤失败:

Then I should see "Name" within "th"

虽然这个过去了:

Then I should see "Name" within "th.attendance"

我真的必须使用这种特异性水平吗?我觉得,对于Cucumber来说,这需要对所测试的底层代码有太多的了解,而且它应该更通用一些。

换句话说,我怎么说“在'th'标签内找到'[value]'”?我想要这样做是错的吗?

1 个答案:

答案 0 :(得分:3)

尝试以下方法。它使用xpath在给定的选择器中查找给定的文本。 "//#{selector}"表示它应该找到与选择器匹配的标记。 "[contains(text(),'#{text}']"表示标记文本应包含给定文本。

Then /^I should see "([^"]*)" within "([^"]*)"$/ do |text, selector|
  find(:xpath, "//#{selector}[contains(text(),'#{text}')]").should_not(be_nil, "Could not find the text '#{text}' within the selector '#{selector}'")
end