试图通过赋值变量i来增加对象的值。请建议

时间:2016-03-17 13:36:43

标签: ruby capybara rubyxl

下面是我的代码。我正在尝试将excel工作表中的值输入到页面中的文本框。例如:在文本框中,id是'allocationRegContrib [17] .newFundValue'我想输入一个值20,类似于另一个id为'allocationRegContrib [18] .newFundValue'的文本框,我想输入一个值40。如何实现。类似地,id最多可达60.但我不想输入所有文本框。所以我试图使用像fill_in“allocationRegContrib [i] .newFundValue”。

     @i=17
    for j in (workbook.first_row..workbook.last_row)

     for k in (workbook.first_column..workbook.last_column)

      if(k==1)
    fill_in "searchInput", :with => workbook.cell(j,1)
    find(:xpath, '//*[@id="sdcaLink"]').click
    sleep 3


    else
    choose("sdcaOption", :option => "YES")
    select(workbook.cell(j,k), :from => 'sdcaDuration')
    fill_in "allocationRegContrib[i].newFundValue", :with => workbook.cell(j,k)
    @i=i+1
    find(:xpath, '//*[@id="specialDCAupdate"]').click

但它对我不起作用。错误是“无法找到capybara元素allocationRegContrib [i] .newFundValue”。请建议

1 个答案:

答案 0 :(得分:0)

您可能有两个问题:

i@i不是一回事。我想你可能想在所有地方使用ii是一个局部变量(即一个简单的普通旧变量)。 @i是类的实例变量,如其他语言中的“field”或“property”。

fill_in "allocationRegContrib[i].newFundValue", :with => workbook.cell(j,k)

应该是:

fill_in "allocationRegContrib[#{i}].newFundValue", :with => workbook.cell(j,k)

#{i}将变量i的值放入字符串中,然后水豚匹配器可以找到元素allocationRegContrib[17].newFundValue(当i = 17时)