Sha256: f8c34d64a34ccc2aead3d0f51263d559568734386772e8896be7108668dde2ca
Contents?: true
Size: 1.59 KB
Versions: 3
Compression:
Stored size: 1.59 KB
Contents
module Webdriver class Connection def initialize endpoint uri = URI(endpoint) @http = Net::HTTP.new uri.hostname, uri.port end def get path, headers={} call :get, path, headers end def post path, headers={}, body=nil call :post, path, headers, body end def post path, headers={}, body=nil call :post, path, headers, body end def call method, path, headers={}, body={} path = "/#{path}" body_json = body.to_json if body Webdriver.debug [method, path, headers, body_json] response = case method when :get @http.get path when :post @http.post path, body_json when :delete @http.delete path, body_json else raise "err" end response_body = JSON.parse response.body status = response_body.dig "status" session_id = response_body.dig "sessionId" value = response_body.dig "value" case status when 0 # POST /session has different response structure than other calls if method == :post && path == "/session" value.merge("id" => session_id) else # everything else works like this value end when 1..nil # 10: stale element reference: element is not attached to the page document # 11: element not interactable error_message = value.dig("message") raise "#{status}: #{error_message}" else if method == :get && path == "/status" value else raise [:unknown, response_body] end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
webdriver-0.8.0 | lib/webdriver/connection.rb |
webdriver-0.7.0 | lib/webdriver/connection.rb |
webdriver-0.6.4 | lib/webdriver/connection.rb |