2017-04-19 169 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" }} 
相關問題