Method: Ferrum::Page#initialize

Defined in:
lib/ferrum/page.rb

#initialize(target_id, browser, new_window = false) ⇒ Page

Returns a new instance of Page.



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/ferrum/page.rb', line 62

def initialize(target_id, browser, new_window = false)
  @target_id, @browser = target_id, browser
  @network_traffic = []
  @event = Event.new.tap(&:set)

  @frames = {}
  @waiting_frames ||= Set.new
  @frame_stack = []

  # Dirty hack because new window doesn't have events at all
  sleep(NEW_WINDOW_WAIT) if new_window

  @session_id = @browser.command("Target.attachToTarget", targetId: @target_id)["sessionId"]

  host = @browser.process.host
  port = @browser.process.port
  ws_url = "ws://#{host}:#{port}/devtools/page/#{@target_id}"
  @client = Browser::Client.new(browser, ws_url, 1000)

  @mouse, @keyboard = Mouse.new(self), Keyboard.new(self)
  @headers, @cookies = Headers.new(self), Cookies.new(self)

  subscribe
  prepare_page
end