String的未定义方法`^'(NoMethodError)

时间:2017-04-19 18:20:57

标签: ruby selenium capybara

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

Dim dt As DataTable = New DataTable

Dim connection As SqlConnection = New SqlConnection(connStr)
Dim adapter As SqlDataAdapter = New SqlDataAdapter(SqlQuery & SqlQuery2, connection)

adapter.Fill(dt)

DropDownList1.DataSource = dt
DropDownList2.DataSource = dt
  

未定义的方法`^'表示“1”:字符串(NoMethodError)   ./features/support/ui_interface_react.rb:271:在`fill_in_field'

错误发生在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 行上。我知道 value 是一个字符串,字段field.set(value)。我做错了什么?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

你应该在文件顶部声明函数,因为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" }}