Class: HeadlessBrowserTool::Tools::SelectTool

Inherits:
BaseTool
  • Object
show all
Defined in:
lib/headless_browser_tool/tools/select_tool.rb

Instance Method Summary collapse

Instance Method Details

#execute(value:, dropdown_selector:) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/headless_browser_tool/tools/select_tool.rb', line 16

def execute(value:, dropdown_selector:)
  dropdown = browser.find(dropdown_selector)

  # Get all options
  options = dropdown.all("option").map.with_index do |opt, index|
    {
      selector: "#{dropdown_selector} option:nth-of-type(#{index + 1})",
      value: opt.value,
      text: opt.text,
      selected: opt.selected?
    }
  end

  browser.select(value, dropdown_selector)

  # Find the newly selected option
  selected_option = dropdown.all("option").find(&:selected?)

  {
    dropdown_selector: dropdown_selector,
    selected_value: selected_option&.value,
    selected_text: selected_option&.text,
    options: options,
    status: "selected"
  }
end