webdriver 0.9.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ae35035ea60b2dde14a44927d1b808aafe264f0875c61dbd7fff3eac0a9774ee
4
- data.tar.gz: 46e3d6220ba809b4dc65f86c06c3b0fe42a7d43beedd1517a6aaeccb9f51749e
3
+ metadata.gz: c0fc8a27cdf88f2be99a6db59d746bf568c6ec2471d7ef3a79e7b1570ec58400
4
+ data.tar.gz: f0f526c0ac95921a54aeee8e05bb9bab40b1da3ea743a17aa8d9db59f6d6cb42
5
5
  SHA512:
6
- metadata.gz: 03722631a70029443759a20e8ee974052c6a1c5a985e72e030f41348ce5cd804b50220dbc0ef2f5e7ef64202fe0ab2190db99ea74245872088215cbf12821d1b
7
- data.tar.gz: 3509414223270d097563fe78348155729d1c942dd7600b2908eaa5487ec1b61b758cd49786d60c567ead13f8fa918d52082dd2a08d7bb5202da3e859d8f3806e
6
+ metadata.gz: 7a34dfdc81d44c0f376c732a10c4b73b0935d60ee06885ceb87d9ccddbb50e6b9b18238db8ab29cc21c13ac12ca2cc222f84f1914afcf2aad72ccb70cf9b5902
7
+ data.tar.gz: 3203013d1dda2c8e7fcdb5a6d1ac604326ba191071ce06210770152550b74482e0dfca8b9e7dc650591d8c9e8feab576bf8f501ae5ce222310a3bed8e8efb6eb
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- webdriver (0.9.0)
4
+ webdriver (0.12.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -3,6 +3,7 @@ module Webdriver
3
3
  def initialize endpoint
4
4
  uri = URI(endpoint)
5
5
  @http = Net::HTTP.new uri.hostname, uri.port
6
+ @mutex = Mutex.new
6
7
  end
7
8
 
8
9
  def get path, headers={}
@@ -22,15 +23,17 @@ module Webdriver
22
23
  body_json = body.to_json if body
23
24
  Webdriver.debug [method, path, headers, body_json]
24
25
 
25
- response = case method
26
- when :get
27
- @http.get path
28
- when :post
29
- @http.post path, body_json
30
- when :delete
31
- @http.delete path, body_json
32
- else
33
- raise "err"
26
+ response = @mutex.synchronize do
27
+ case method
28
+ when :get
29
+ @http.get path
30
+ when :post
31
+ @http.post path, body_json
32
+ when :delete
33
+ @http.delete path, body_json
34
+ else
35
+ raise "err"
36
+ end
34
37
  end
35
38
 
36
39
  response_body = JSON.parse response.body
@@ -39,7 +42,11 @@ module Webdriver
39
42
  session_id = response_body.dig "sessionId"
40
43
  value = response_body.dig "value"
41
44
 
45
+
42
46
  case status
47
+ when nil
48
+ # application_status_cache
49
+ value
43
50
  when 0
44
51
  # POST /session has different response structure than other calls
45
52
  if method == :post && path == "/session"
@@ -51,6 +58,8 @@ module Webdriver
51
58
  raise Webdriver::StaleElementReferenceError
52
59
  when 11
53
60
  raise Webdriver::ElementNotInteractableError
61
+ when 13
62
+ raise Webdriver::UnknownErrorUnhandledInspectorError
54
63
  when 1..nil
55
64
  error_message = value.dig("message")
56
65
  raise "#{status}: #{error_message}"
@@ -58,7 +67,7 @@ module Webdriver
58
67
  if method == :get && path == "/status"
59
68
  value
60
69
  else
61
- raise [:unknown, response_body]
70
+ raise "unknown status: #{status}"
62
71
  end
63
72
  end
64
73
  end
@@ -14,6 +14,14 @@ module Webdriver
14
14
  @id == other.id
15
15
  end
16
16
 
17
+ def location_in_view
18
+ @connection.get "location_in_view"
19
+ end
20
+
21
+ def size
22
+ @connection.get "size"
23
+ end
24
+
17
25
  def screenshot
18
26
  @connection.get "screenshot"
19
27
  end
@@ -3,4 +3,6 @@ module Webdriver
3
3
  class StaleElementReferenceError < StandardError; end
4
4
  # 11
5
5
  class ElementNotInteractableError < StandardError; end
6
+ # 13
7
+ class UnknownErrorUnhandledInspectorError < StandardError; end
6
8
  end
@@ -17,10 +17,97 @@ module Webdriver
17
17
  value.map { |id| Webdriver::Window.new id, @connection }
18
18
  end
19
19
 
20
+ def chromium_send_command_and_get_result! opts
21
+ # cmd: "Browser.getVersion", params: {}
22
+ @connection.post "chromium/send_command_and_get_result", {}, opts
23
+ end
24
+
25
+ def is_loading?
26
+ @connection.get "is_loading"
27
+ end
28
+
29
+ def page_freeze!
30
+ @connection.post "goog/page/freeze"
31
+ end
32
+
33
+ def page_resume!
34
+ # needs window min/max / timeout to resume
35
+ @connection.post "goog/page/resume"
36
+ end
37
+
38
+ # https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Keys
39
+ # enter "\ue007"
40
+ def keys= opts
41
+ @connection.post "keys", {}, opts
42
+ end
43
+
44
+ def moveto! opts
45
+ # xoffset, yoffset, element
46
+ @connection.post "moveto", {}, opts
47
+ end
48
+
49
+ def location
50
+ @connection.get "location"
51
+ end
52
+
53
+ def location! opts
54
+ #{location: {latitude: 20, longitude:20}}
55
+ @connection.post "location", {}, opts
56
+ end
57
+
58
+ def reporting_generate_test_report! opts
59
+ @connection.post "reporting/generate_test_report", {}, opts
60
+ end
61
+
62
+ def timeouts
63
+ @connection.get "timeouts"
64
+ end
65
+
66
+ def timeouts! opts
67
+ @connection.post "timeouts", {}, opts
68
+ self
69
+ end
70
+
71
+ def timeouts_async_script! opts
72
+ @connection.post "timeouts/async_script", {}, opts
73
+ end
74
+
75
+ def log_types
76
+ @connection.get "log/types"
77
+ end
78
+
79
+ def log type
80
+ @connection.post "log", {}, {
81
+ type: type
82
+ }
83
+ end
84
+
85
+ def application_cache_status
86
+ @connection.get "application_cache/status"
87
+ end
88
+
20
89
  # not implemented in chromedriver
21
- # def source
22
- # @connection.post "source"
23
- # end
90
+ def source
91
+ @connection.get "source"
92
+ end
93
+
94
+ def chromium_heap_snapshot
95
+ @connection.get "chromium/heap_snapshot"
96
+ end
97
+
98
+ def chromium_network_conditions
99
+ @connection.get "chromium/network_conditions"
100
+ end
101
+
102
+ def chromium_network_conditions! conditions
103
+ @connection.post "chromium/network_conditions", {}, conditions
104
+ self
105
+ end
106
+
107
+ def chromium_network_conditions_delete!
108
+ @connection.delete "chromium/network_conditions"
109
+ self
110
+ end
24
111
 
25
112
  def dismiss_alert!
26
113
  @connection.post "alert/dismiss"
@@ -149,15 +236,18 @@ module Webdriver
149
236
  end
150
237
  end
151
238
 
152
- # not implemented in chromedriver
153
- # def print!
154
- # @connection.post "print"
155
- # end
239
+ def print! opts
240
+ @connection.post "print", {}, opts
241
+ end
156
242
 
157
243
  def screenshot
158
244
  @connection.get "screenshot"
159
245
  end
160
246
 
247
+ def screenshot_full
248
+ @connection.get "screenshot/full"
249
+ end
250
+
161
251
  # when moving with tab, or clicked
162
252
  def active_element
163
253
  el = @connection.get "element/active"
@@ -1,3 +1,3 @@
1
1
  module Webdriver
2
- VERSION = "0.9.0"
2
+ VERSION = "0.12.0"
3
3
  end
@@ -3,7 +3,20 @@ module Webdriver
3
3
  attr_reader :id
4
4
  def initialize(id, connection)
5
5
  @id = id
6
- @connection = Webdriver::PrefixConnection.new "window", connection
6
+ @session_connection = connection
7
+ @connection = Webdriver::PrefixConnection.new "window/#{@id}", connection
8
+ end
9
+
10
+ def size
11
+ @connection.get "size"
12
+ end
13
+
14
+ def position
15
+ @connection.get "position"
16
+ end
17
+
18
+ def position! opts
19
+ @connection.post "position", {}, opts
7
20
  end
8
21
 
9
22
  def maximize!
@@ -12,22 +25,22 @@ module Webdriver
12
25
  end
13
26
 
14
27
  def minimize!
15
- @connection.post "minimize"
28
+ @session_connection.post "window/minimize"
16
29
  self
17
30
  end
18
31
 
19
32
  def rect! width: nil, height: nil, x: nil, y:nil
20
- @connection.post("rect", {}, {
33
+ @session_connection.post "window/rect", {}, {
21
34
  width: width,
22
35
  height: height,
23
36
  x: x,
24
37
  y: y
25
- })
38
+ }
26
39
  self
27
40
  end
28
41
 
29
42
  def rect
30
- @connection.get "rect"
43
+ @session_connection.get "window/rect"
31
44
  end
32
45
 
33
46
  def fullscreen!
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webdriver
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matti Paksula
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-06-07 00:00:00.000000000 Z
11
+ date: 2020-09-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler