1

ブラウザー参照で変数を使用する際に問題が発生しています。ul、ol などのフィールド タイプを渡そうとしています。コードは ol と入力しても機能しますが、'field' というラベルの付いた pass 変数を使用したいと考えています。「フィールドのメソッドが未定義です」というエラーが表示されます。

#{field} も使用してみましたが、どちらも機能しません。エラーは、フィールドが定義されていないことです。

def CheckNewPageNoUl(browser, field, text1, output)

  browser.a(:id => 'submitbtn').hover
  browser.a(:id => 'submitbtn').click
  output.puts("text1  #{text1}")      
  browser.body(:id => 'page').wait_until_present
  if browser.table.field.exists?
    output.puts(" #{text1} was found in CheckNewPageNoUl")
  end
end

field = "ol" 

text1 = "<ol>"

CheckText.CheckNewPageNoUl(b, field, text1, outputt)
4

1 に答える 1

3

文字列をメソッド呼び出しに変換するには、次のObject#send2 つのパラメーターを使用できる を使用します。

  1. メソッド名 (文字列またはシンボルとして)
  2. メソッドの引数 (オプション)

いくつかの例:

field = 'ol'
browser.send(field).exists?
#=> Translates to browser.ol.exists?

specifiers = {:text => 'text', :class => 'class'}
browser.send(field, specifiers).exists?
#=> Translates to browser.ol(:text => 'text', :class => 'class').exists?

コードには、次のものが必要です。

if browser.table.send(field).exists?
  output.puts(" #{text1} was found in CheckNewPageNoUl")
end
于 2013-02-01T12:09:31.170 に答える