Chosen.js の複数選択リストの最初の空白の後の最初の項目を選択するために Capybara + Selenium を使用しようとしています。
2つあるのですが、合わせるのに苦労しています。つまり、次のスニペットを使用して、インデックスに基づいて選択ボックスからアイテムを選択することに成功しました。
def select_second_option(id)
second_option_xpath = "//*[@id='#{id}']/option[2]"
second_option = find(:xpath, second_option_xpath).text
select(second_option, :from => id)
end
...そして、以下は、選択されたフィールドを選択するために機能すると言われています:
def select_from_chosen(item_text, options)
field = find_field(options[:from], visible: false)
option_value = page.evaluate_script("$(\"##{field[:id]} option:contains('#{item_text}')\").val()")
page.execute_script("value = ['#{option_value}']\; if ($('##{field[:id]}').val()) {$.merge(value, $('##{field[:id]}').val())}")
option_value = page.evaluate_script("value")
page.execute_script("$('##{field[:id]}').val(#{option_value})")
page.execute_script("$('##{field[:id]}').trigger('liszt:updated').trigger('change')")
end
しかし、私はこの 2 つの概念をうまく機能させることができないようです。
フォームの機能を持つように、これらのアイデアをどのように組み合わせることができselect_second_option_from_chosen(id)
ますか?