class Selenium::WebDriver::BiDi::LogInspector
Constants
- EVENTS
- LOG_LEVEL
Public Class Methods
new(driver, browsing_context_ids = nil)
click to toggle source
# File lib/selenium/webdriver/bidi/log_inspector.rb, line 42 def initialize(driver, browsing_context_ids = nil) unless driver.capabilities.web_socket_url raise Error::WebDriverError, 'WebDriver instance must support BiDi protocol' end @bidi = driver.bidi @bidi.session.subscribe('log.entryAdded', browsing_context_ids) end
Public Instance Methods
on_console_entry(&block)
click to toggle source
# File lib/selenium/webdriver/bidi/log_inspector.rb, line 52 def on_console_entry(&block) enabled = log_listeners[:console].any? log_listeners[:console] << block return if enabled on_log do |params| type = params['type'] console_log_events(params) if type.eql?('console') end end
on_javascript_exception(&block)
click to toggle source
# File lib/selenium/webdriver/bidi/log_inspector.rb, line 74 def on_javascript_exception(&block) enabled = log_listeners[:js_exception].any? log_listeners[:js_exception] << block log_listeners[:javascript] << block return if enabled on_log do |params| type = params['type'] level = params['level'] javascript_log_events(params) if type.eql?('javascript') && level.eql?(LOG_LEVEL[:ERROR]) end end
on_javascript_log(&block)
click to toggle source
# File lib/selenium/webdriver/bidi/log_inspector.rb, line 63 def on_javascript_log(&block) enabled = log_listeners[:javascript].any? log_listeners[:javascript] << block return if enabled on_log do |params| type = params['type'] javascript_log_events(params) if type.eql?('javascript') end end
on_log(&block)
click to toggle source
# File lib/selenium/webdriver/bidi/log_inspector.rb, line 88 def on_log(&block) on(:entry_added, &block) end
Private Instance Methods
console_log_events(params)
click to toggle source
# File lib/selenium/webdriver/bidi/log_inspector.rb, line 103 def console_log_events(params) event = ConsoleLogEntry.new( level: params['level'], text: params['text'], timestamp: params['timestamp'], type: params['type'], method: params['method'], realm: params['realm'], args: params['args'], stack_trace: params['stackTrace'] ) log_listeners[:console].each do |listener| listener.call(event) end end
javascript_log_events(params)
click to toggle source
# File lib/selenium/webdriver/bidi/log_inspector.rb, line 119 def javascript_log_events(params) event = JavascriptLogEntry.new( level: params['level'], text: params['text'], timestamp: params['timestamp'], type: params['type'], stack_trace: params['stackTrace'] ) log_listeners[:javascript].each do |listener| listener.call(event) end return unless params['level'].eql?(LOG_LEVEL[:ERROR]) log_listeners[:js_exception].each do |listener| listener.call(event) end end
log_listeners()
click to toggle source
# File lib/selenium/webdriver/bidi/log_inspector.rb, line 99 def log_listeners @log_listeners ||= Hash.new { |listeners, kind| listeners[kind] = [] } end
on(event, &block)
click to toggle source
# File lib/selenium/webdriver/bidi/log_inspector.rb, line 94 def on(event, &block) event = EVENTS[event] if event.is_a?(Symbol) @bidi.callbacks["log.#{event}"] << block end