webdriver 0.9.0 → 0.12.0

Sign up to get free protection for your applications and to get access to all the features.
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