2017-01-12 12 views
0

ドロップダウンに問題があります。ドロップダウンにはselectizeを使用しますが、オプションの数が大きすぎるとドロップダウンにスクロールが追加されます。表示されていないオプションをクリックしてください(見たい場合はスクロールする必要があります)。capybaraはオプションがあると思って、スクロールせずにオプションをクリックします。Capybaraでスクロールしながらドロップダウンをクリックする

答えて

1

:arrow_downネイティブキーを送信してキー操作をシミュレートするよりも、ドロップダウンの目に見える要素をクリックすることができます(表示されていない要素を検索するように指示することはありません)。要素が表示されるまでこれを行い、次にactiveオプションをクリックします。 selectize.jsホームページの

チェックこれを:

find("#select-country-selectized").click() 
while(true) 
    break if find(".option.active").text == "Benin" 
    find("#select-country-selectized").native.send_keys(:arrow_down) 
end 

find(".option.active").click 
+0

編集の最初のオプションです。 'click'に問題がなければ常に' .option.active'があります。 –

0

gunesmesの例は非常に有用だった、それは常に最初のオプションをジャンプして検索を変更するだろうotherwhiseので、私は休憩1つのラインナップを作るようないくつかの変更を加えましたhas_cssのために? findはエラーとhas_cssを返すため? trueまたはfalseを返します。私は繭を使用しているため、最初に見つかったものを変更しました。生成された最後の入力を常に満たす必要があります。最終的な結果は次のようなものでした:

def scroll_dropdown(user) 
    all('input[id$="_user_id-selectized"]').last.click 
    while(true) 
     break if page.has_css?(".option.active", text: user, match: :prefer_exact, wait: false) 
     all('input[id$="_user_id-selectized"]').last.native.send_keys(:arrow_down) 
    end 

    find(".option.active").click 
    end 
関連する問題