2017-04-19 165 views
0

我对Cucumber/Capybara/Ruby/Selenium非常新,我只是试图设置一个简单的字段值。我发现现场有一个特殊的选择,然后试图将其设置:字符串未定义方法`^'(NoMethodError)

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 

未定义的方法'^”为‘1’:字符串(NoMethodError) ./features/support/ui_interface_react.rb :271:in`fill_in_field'

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

+0

什么是错误的堆栈跟踪,并您使用的是什么驱动? –

+0

您是否有更多可以在水豚中显示该行的堆栈跟踪? –

回答

1

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

+0

这确实是答案。我在代码中实际使用的xpath比我在这里列出的要复杂得多,导致选择了多个输入,其中第一个是复选框。 –

1

你应该在文件的顶部声明函数,因为红宝石之上执行到底FASION这样

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" }} 
相关问题