字符串的未定义方法“^”(NoMethodError)

Undefined method `^' for String (NoMethodError)

我是 Cucumber/Capybara/Ruby/Selenium 的新手,我只是想设置一个带有值的简单字段。我正在查找带有特殊选择器的字段,然后尝试设置它:

Capybara.add_selector(:filter_field) {xpath { |field_name| ".//div[contains(@class,'#{field_name}')]//input" }}

def fill_in_field(field_name, value)
  field = find(:filter_field, field_name)
  field.set(value)
end

undefined method `^' for "1":String (NoMethodError) ./features/support/ui_interface_react.rb:271:in `fill_in_field'

错误发生在行field.set(value)。我知道 value 是一个字符串,field 是一个 #<Capybara::Node::Element>。我做错了什么?

您使用的是 selenium,我猜您找到的字段元素是一个复选框,在调用 set 时采用 truefalse,而不是字符串。

您应该在文件顶部声明函数,因为 ruby 像这样从上到下执行

   def fill_in_field(field_name, value)
  field = find(:filter_field, field_name)
   field.set(value)
  end

Capybara.add_selector(:filter_field) {xpath { |field_name| ".//div[contains(@class,'#{field_name}')]//input" }}