0

この関数で設定した時間内に表示される要素を待つために、Selenium Webdriver Ruby を使用して関数を作成しています

私の関数には2つのパラメーターがあります(1つのオプションパラメーターと1つのパラメーターはオブジェクトのロケーター名です

したがって、次のような2つのパラメーターを持つ関数があります。

def wait_for_element_displayed(locator, options={})
    if options[:time]
       settime = options[:time]
    else
       settime= 60
    end
    @driver.find_element(locator).click
end

したがって、この関数を次のように呼び出します: wait_for_element_displayed(:id="unique1", :time => "20")

ただし、この方法でこの関数を呼び出そうとするとエラーが発生しました。エラーは「TypeError: String を正確な数値に変換できません」です。

私のシナリオのような2つのパラメータを関数に渡す方法を教えてください。どんな助けでも感謝します。

4

1 に答える 1

1

いくつかの提案:

hash#fetch検索しているキーが存在しない場合は、デフォルト値を設定するために使用できます。

time = options.fetch(:time) { 60 }

両方の引数がハッシュであり、それらを区別しない場合、Ruby は入力を解析するのに苦労します。また、あなたのエラーにより、文字列ではなく整数として 20 を指定する必要があると思います。次のようにメソッドを呼び出してみてください。

wait_for_element_displayed({:id => "unique1"}, { :time => 20 })

最後に、私は Selenium についてあまり知らないので、誰かが最後の点について補足してくれるかもしれません。変数を設定するsettimeだけでタイムアウトを構成できますか?

于 2013-02-19T03:08:19.483 に答える