Class: SharedTools::Tools::Browser::SelectorInspectTool

Inherits:
RubyLLM::Tool
  • Object
show all
Includes:
InspectUtils
Defined in:
lib/shared_tools/tools/browser/selector_inspect_tool.rb

Overview

A browser automation tool for inspecting elements using CSS selectors.

Class Method Summary collapse

Instance Method Summary collapse

Methods included from InspectUtils

#add_elements_from_matching_labels, #ci_contains, #clean_document, #cleaned_document, #find_elements_with_matching_text

Constructor Details

#initialize(driver: nil, logger: nil) ⇒ SelectorInspectTool

Returns a new instance of SelectorInspectTool.



25
26
27
28
# File 'lib/shared_tools/tools/browser/selector_inspect_tool.rb', line 25

def initialize(driver: nil, logger: nil)
  @driver = driver || default_driver
  @logger = logger || RubyLLM.logger
end

Class Method Details

.nameObject



14
# File 'lib/shared_tools/tools/browser/selector_inspect_tool.rb', line 14

def self.name = 'browser_selector_inspect'

Instance Method Details

#execute(selector:, context_size: 2) ⇒ Object

Raises:

  • (LoadError)


30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/shared_tools/tools/browser/selector_inspect_tool.rb', line 30

def execute(selector:, context_size: 2)
  raise LoadError, "SelectorInspectTool requires the 'nokogiri' gem. Install it with: gem install nokogiri" unless defined?(Nokogiri)

  @logger.info("#{self.class.name}##{__method__}")

  doc = cleaned_document(html: @driver.html)
  target_elements = doc.css(selector)

  return "No elements found matching selector: #{selector}" if target_elements.empty?

  format_elements(target_elements, selector, context_size)
end