Cucumber / Webrat:按CSS类链接?

时间:2009-10-20 06:48:58

标签: css ruby css-selectors cucumber webrat

是否可以按照其名称而不是ID,文字或标题来关注链接?鉴于我有(哈哈,黄瓜内幕他?)以下的HTML代码:

<div id="some_information_container">
  <a href="edit" class="edit_button">Translation here</a>
</div>
  • 我不想按文字进行匹配,因为我必须关心我的测试中的翻译值
  • 我希望我的按钮看起来都是相同的样式,所以我将使用CSS类。
  • 我不想为每个链接分配一个id,因为其中一些是通过容器和链接类完美识别的

在Cucumber / Webrat中有什么我错过的吗?或者你有什么建议可以更好地解决这个问题吗?

感谢您的帮助和最诚挚的问候,

编辑:我发现有关此主题的有趣讨论here - 现在似乎仍然是一个悬而未决的问题。你还有其他解决方案吗?

5 个答案:

答案 0 :(得分:4)

这是我用黄瓜做的方式,希望它有所帮助。步骤定义中的#有助于CSS了解最新情况。

这仅适用于ID而非类名

步骤定义

Then /^(?:|I )should see ([^\"]*) within a div with id "([^\"]*)"$/ do |text, selector|
  # checks for text within a specified div id
  within "##{selector}" do |content|  
    if defined?(Spec::Rails::Matchers)
      content.should contain(text)
    else
      hc = Webrat::Matchers::HasContent.new(text)
      assert hc.matches?(content), hc.failure_message
    end  
  end     
end

功能

Scenario Outline: Create Project
  When I fill in name with <title>
      And I select <data_type> from data_type
      And I press "Create"
  Then I should see <title> within a div with id "specifications"

Scenarios: Search Terms and Results
   | data_type  | title        |
   | Books      | A Book Title |

答案 1 :(得分:3)

以下是如何在类名为“edit_botton”的元素中声明文本

Then I should see "Translation here" within "[@class='edit_button']"

答案 2 :(得分:1)

find('a.some-class').click怎么样?

答案 3 :(得分:0)

我对WebRat API不太熟悉,但是如何使用DOM查找来获取您要查找的类的引用ID,然后将其传递给click_link函数?

这是一个链接到一些javascript来按类检索项目。 http://mykenta.blogspot.com/2007/10/getelementbyclass-revisited.html

现在我考虑一下,使用Javascript只需将其更改为某个随机ID,然后点击它即可?

无论哪种方式,这应该有效,直到名称的节俭辩论包括getbyclass函数为止。

答案 4 :(得分:0)

have_tag对您有用吗?

have_tag( 'a.edit_button')