class Selenium::WebDriver::BiDi::LogInspector
def check_valid_filter(filter_by)
def check_valid_filter(filter_by) return if filter_by.nil? || filter_by.instance_of?(FilterBy) raise "Pass valid FilterBy object. Received: #{filter_by.inspect}" end
def console_log_events(params, filter_by)
def console_log_events(params, filter_by) 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'] ) unless filter_by.nil? yield(event) if params['level'] == filter_by.level return end yield(event) end
def initialize(driver, browsing_context_ids = nil)
def initialize(driver, browsing_context_ids = nil) WebDriver.logger.deprecate('LogInspector class', 'Script class with driver.script', id: :log_inspector) 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
def javascript_log_events(params, filter_by)
def javascript_log_events(params, filter_by) event = JavascriptLogEntry.new( level: params['level'], text: params['text'], timestamp: params['timestamp'], type: params['type'], stack_trace: params['stackTrace'] ) unless filter_by.nil? yield(event) if params['level'] == filter_by.level return end yield(event) end
def on(event, &)
def on(event, &) event = EVENTS[event] if event.is_a?(Symbol) @bidi.add_callback("log.#{event}", &) end
def on_console_entry(filter_by = nil, &block)
def on_console_entry(filter_by = nil, &block) check_valid_filter(filter_by) on_log do |params| type = params['type'] console_log_events(params, filter_by, &block) if type.eql?('console') end end
def on_javascript_exception(&block)
def on_javascript_exception(&block) on_log do |params| type = params['type'] javascript_log_events(params, FilterBy.log_level('error'), &block) if type.eql?('javascript') end end
def on_javascript_log(filter_by = nil, &block)
def on_javascript_log(filter_by = nil, &block) check_valid_filter(filter_by) on_log do |params| type = params['type'] javascript_log_events(params, filter_by, &block) if type.eql?('javascript') end end
def on_log(filter_by = nil, &)
def on_log(filter_by = nil, &) unless filter_by.nil? check_valid_filter(filter_by) on(:entry_added) do |params| yield(params) if params['level'] == filter_by.level end return end on(:entry_added, &) end