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, params = nil) ⇒ Target

Returns a new instance of Target.



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

def initialize(browser, params = nil)
  @browser = browser
  @params = params
end

Instance Attribute Details

#pageObject



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

def page
  @page ||= begin
    maybe_sleep_if_new_window
    Page.new(id, @browser)
  end
end

Instance Method Details

#attached?Boolean

Returns:

  • (Boolean)


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

def attached?
  !!@page
end

#context_idObject



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

def context_id
  @params["browserContextId"]
end

#idObject



31
32
33
# File 'lib/ferrum/target.rb', line 31

def id
  @params["targetId"]
end

#maybe_sleep_if_new_windowObject



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

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



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

def opener_id
  @params["openerId"]
end

#titleObject



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

def title
  @params["title"]
end

#typeObject



35
36
37
# File 'lib/ferrum/target.rb', line 35

def type
  @params["type"]
end

#update(params) ⇒ Object



16
17
18
# File 'lib/ferrum/target.rb', line 16

def update(params)
  @params = params
end

#urlObject



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

def url
  @params["url"]
end

#window?Boolean

Returns:

  • (Boolean)


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

def window?
  !!opener_id
end