【问题标题】:Checking an element is absent using WebRat不使用 WebRat 检查元素
【发布时间】:2009-10-29 20:22:57
【问题描述】:

以下工作正常:

Then /^I should see a button called "([^\"]*)"$/ do |name|
  response.should have_selector("li") do |li|
    li.should have_selector("a") do |a|
      a.should contain(name)
    end
  end
end

现在我需要用这样的步骤来补充它:

Then /^I should not see a button called "([^\"]*)"$/ do |name|
   [snip...]
end

标准的“我不应该看到”并不令人满意,因为它会在页面中的任何地方找到目标短语——而不仅仅是在按钮内。我特别需要检查是否不存在带有目标文本的按钮。

我的第一直觉是尝试这样的事情:

Then /^I should see a button called "([^\"]*)"$/ do |name|
  response.should have_selector("li") do |li|
    li.should have_selector("a") do |a|
      a.should_not contain(name)
    end
  end
end

当然,只要页面上有任何不包含目标文本的按钮,即使还有一个或多个按钮确实包含目标文本,这也会过去。

你的想法?

非常感谢,

史蒂文。

【问题讨论】:

    标签: ruby-on-rails cucumber webrat


    【解决方案1】:

    您可以使用assert_not_contain(也可以使用not_contain,但我对此表示怀疑,因为它不在rdoc 中)。

    a.should assert_not_contain(name)
    

    【讨论】:

    • 是的,如果你采用这种方法,assert_not_contain(name) 就是你想要的方法。
    • 其实没那么快...不过我无法将代码粘贴到评论框中,所以我继续在 WebRat Google Group 中工作。
    • 您可以使用附加信息更新您的问题。
    【解决方案2】:

    问题解决了!我给每个控件一个“控件”类,然后写 这一步定义:

    Then /^I should not see a control called "([^\"]*)"$/ do |name|
      response.should have_selector("a.control", :content => name, :count
    => 0)
    end
    

    当然,这假设我很乐意给他们上一堂课 “控制”……

    s.

    【讨论】:

      【解决方案3】:

      您的按钮实际上是链接吗?对于按钮(有提交值的地方),我使用:

      assert_have_selector "input[type=submit][value=\"#{text}\"]"
      

      和:

      assert_have_no_selector "input[type=submit][value=\"#{text}\"]"
      

      第一次。

      【讨论】:

      • 是的,你是对的。从技术上讲,它们是链接。我只是称它们为按钮,因为它们在界面中是这样显示的。
      • 你让我思考。我刚刚在所有测试中将“按钮”更改为“控制”。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-05
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 2019-12-18
      • 2022-10-13
      • 1970-01-01
      相关资源
      最近更新 更多