Class: Ferrum::Target

Inherits:
Object
  • Object
show all
Defined in:
lib/ferrum/target.rb

Constant Summary collapse

NEW_WINDOW_WAIT =
ENV.fetch("FERRUM_NEW_WINDOW_WAIT", 0.3).to_f

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(browser_client, session_id = nil, params = nil) ⇒ Target

Returns a new instance of Target.



13
14
15
16
17
18
19
# File 'lib/ferrum/target.rb', line 13

def initialize(browser_client, session_id = nil, params = nil)
  @page = nil
  @session_id = session_id
  @params = params
  @browser_client = browser_client
  @options = browser_client.options
end

Instance Attribute Details

#optionsObject (readonly)

Returns the value of attribute options.



11
12
13
# File 'lib/ferrum/target.rb', line 11

def options
  @options
end

#pageObject



29
30
31
# File 'lib/ferrum/target.rb', line 29

def page
  @page ||= build_page
end

#session_idObject (readonly)

Returns the value of attribute session_id.



11
12
13
# File 'lib/ferrum/target.rb', line 11

def session_id
  @session_id
end

Instance Method Details

#build_page(**options) ⇒ Object



37
38
39
40
# File 'lib/ferrum/target.rb', line 37

def build_page(**options)
  maybe_sleep_if_new_window
  Page.new(client, context_id: context_id, target_id: id, **options)
end

#clientObject



33
34
35
# File 'lib/ferrum/target.rb', line 33

def client
  @client ||= build_client
end

#connected?Boolean

Returns:

  • (Boolean)


25
26
27
# File 'lib/ferrum/target.rb', line 25

def connected?
  !!@page
end

#context_idObject



62
63
64
# File 'lib/ferrum/target.rb', line 62

def context_id
  @params["browserContextId"]
end

#idObject



42
43
44
# File 'lib/ferrum/target.rb', line 42

def id
  @params["targetId"]
end

#maybe_sleep_if_new_windowObject



70
71
72
73
# File 'lib/ferrum/target.rb', line 70

def maybe_sleep_if_new_window
  # Dirty hack because new window doesn't have events at all
  sleep(NEW_WINDOW_WAIT) if window?
end

#opener_idObject



58
59
60
# File 'lib/ferrum/target.rb', line 58

def opener_id
  @params["openerId"]
end

#titleObject



50
51
52
# File 'lib/ferrum/target.rb', line 50

def title
  @params["title"]
end

#typeObject



46
47
48
# File 'lib/ferrum/target.rb', line 46

def type
  @params["type"]
end

#update(params) ⇒ Object



21
22
23
# File 'lib/ferrum/target.rb', line 21

def update(params)
  @params.merge!(params)
end

#urlObject



54
55
56
# File 'lib/ferrum/target.rb', line 54

def url
  @params["url"]
end

#window?Boolean

Returns:

  • (Boolean)


66
67
68
# File 'lib/ferrum/target.rb', line 66

def window?
  !!opener_id
end