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
-
#clear_cookies ⇒ void
Drop every cookie held on this connection.
-
#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
#clear_cookies ⇒ void
This method returns an undefined value.
Drop every cookie held on this connection.
Since Obscura 0.1.11 each connection owns its own browser context, so cookies
no longer leak between Browser instances and this is only about resetting
state within one connection — between logical sessions on the same socket,
say. obscura serve is still long-lived and #quit only drops the socket, so
a fresh Browser is the other way to get a clean jar.
94 95 96 97 |
# File 'lib/obxcura/browser.rb', line 94 def command("Network.clearBrowserCookies") nil end |
#close ⇒ void Also known as: quit
This method returns an undefined value.
Close every page, then drop the connection. Aliased as quit.
110 111 112 113 |
# File 'lib/obxcura/browser.rb', line 110 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.
103 104 105 |
# File 'lib/obxcura/browser.rb', line 103 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 |