Class: Obxcura::Browser
- Inherits:
-
Object
- Object
- Obxcura::Browser
- Extended by:
- Forwardable
- Defined in:
- lib/obxcura/browser.rb
Overview
Constant Summary collapse
- DEFAULT_HOST =
Returns default host for
obscura serve. "127.0.0.1"- DEFAULT_PORT =
Returns default CDP port for
obscura serve. 9222
Instance Attribute Summary collapse
- #client ⇒ Obxcura::Client, ... readonly
- #host ⇒ Obxcura::Client, ... readonly
- #pages ⇒ Obxcura::Client, ... readonly
- #port ⇒ Obxcura::Client, ... readonly
Instance Method Summary collapse
-
#close ⇒ void
(also: #quit)
Close every page, then drop the connection.
-
#create_page(url = "about:blank") ⇒ Obxcura::Page
Open a fresh page (a CDP target) and attach to it.
-
#go_to(url) ⇒ Obxcura::Page
(also: #goto)
Open a page and navigate to
urlin one call. -
#initialize(host: DEFAULT_HOST, port: DEFAULT_PORT, timeout: Client::DEFAULT_TIMEOUT) ⇒ Browser
constructor
Connect to a running
obscura serve. -
#remove_page(page) ⇒ Obxcura::Page?
Stop tracking a page.
-
#targets ⇒ Array<Hash>
Every target the browser knows about (pages, workers, ...).
-
#version ⇒ Hash
The browser's
/json/versionmetadata (product, protocol, ws endpoint).
Constructor Details
#initialize(host: DEFAULT_HOST, port: DEFAULT_PORT, timeout: Client::DEFAULT_TIMEOUT) ⇒ Browser
Connect to a running obscura serve.
36 37 38 39 40 41 42 |
# File 'lib/obxcura/browser.rb', line 36 def initialize(host: DEFAULT_HOST, port: DEFAULT_PORT, timeout: Client::DEFAULT_TIMEOUT) @host = host @port = port @timeout = timeout @pages = [] @client = Client.new(browser_ws_url, timeout: @timeout) end |
Instance Attribute Details
#client ⇒ Obxcura::Client, ... (readonly)
26 27 28 |
# File 'lib/obxcura/browser.rb', line 26 def client @client end |
#host ⇒ Obxcura::Client, ... (readonly)
26 27 28 |
# File 'lib/obxcura/browser.rb', line 26 def host @host end |
#pages ⇒ Obxcura::Client, ... (readonly)
26 27 28 |
# File 'lib/obxcura/browser.rb', line 26 def pages @pages end |
#port ⇒ Obxcura::Client, ... (readonly)
26 27 28 |
# File 'lib/obxcura/browser.rb', line 26 def port @port end |
Instance Method Details
#close ⇒ void Also known as: quit
This method returns an undefined value.
Close every page, then drop the connection. Aliased as quit.
96 97 98 99 |
# File 'lib/obxcura/browser.rb', line 96 def close @pages.dup.each(&:close) client.close end |
#create_page(url = "about:blank") ⇒ Obxcura::Page
Open a fresh page (a CDP target) and attach to it.
48 49 50 51 52 53 54 55 |
# File 'lib/obxcura/browser.rb', line 48 def create_page(url = "about:blank") target_id = command("Target.createTarget", { url: url })["targetId"] session_id = command("Target.attachToTarget", { targetId: target_id, flatten: true })["sessionId"] page = Page.new(self, target_id: target_id, session_id: session_id) @pages << page page end |
#go_to(url) ⇒ Obxcura::Page Also known as: goto
Open a page and navigate to url in one call.
Navigates from a blank target rather than passing the URL straight to
Target.createTarget: creating two URL-loaded targets and then evaluating
crashes obscura serve (connection closed: end of file reached).
65 66 67 |
# File 'lib/obxcura/browser.rb', line 65 def go_to(url) create_page.goto(url) end |
#remove_page(page) ⇒ Obxcura::Page?
Stop tracking a page. Called by Page#close.
89 90 91 |
# File 'lib/obxcura/browser.rb', line 89 def remove_page(page) @pages.delete(page) end |
#targets ⇒ Array<Hash>
Every target the browser knows about (pages, workers, ...).
73 74 75 |
# File 'lib/obxcura/browser.rb', line 73 def targets command("Target.getTargets")["targetInfos"] end |
#version ⇒ Hash
The browser's /json/version metadata (product, protocol, ws endpoint).
80 81 82 83 |
# File 'lib/obxcura/browser.rb', line 80 def version uri = URI("http://#{@host}:#{@port}/json/version") JSON.parse(Net::HTTP.get(uri)) end |