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 +4 -4
- data/Gemfile.lock +1 -1
- data/lib/webdriver/connection.rb +19 -10
- data/lib/webdriver/element.rb +8 -0
- data/lib/webdriver/errors.rb +2 -0
- data/lib/webdriver/session.rb +97 -7
- data/lib/webdriver/version.rb +1 -1
- data/lib/webdriver/window.rb +18 -5
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c0fc8a27cdf88f2be99a6db59d746bf568c6ec2471d7ef3a79e7b1570ec58400
|
4
|
+
data.tar.gz: f0f526c0ac95921a54aeee8e05bb9bab40b1da3ea743a17aa8d9db59f6d6cb42
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7a34dfdc81d44c0f376c732a10c4b73b0935d60ee06885ceb87d9ccddbb50e6b9b18238db8ab29cc21c13ac12ca2cc222f84f1914afcf2aad72ccb70cf9b5902
|
7
|
+
data.tar.gz: 3203013d1dda2c8e7fcdb5a6d1ac604326ba191071ce06210770152550b74482e0dfca8b9e7dc650591d8c9e8feab576bf8f501ae5ce222310a3bed8e8efb6eb
|
data/Gemfile.lock
CHANGED
data/lib/webdriver/connection.rb
CHANGED
@@ -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 =
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
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
|
70
|
+
raise "unknown status: #{status}"
|
62
71
|
end
|
63
72
|
end
|
64
73
|
end
|
data/lib/webdriver/element.rb
CHANGED
data/lib/webdriver/errors.rb
CHANGED
data/lib/webdriver/session.rb
CHANGED
@@ -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
|
-
|
22
|
-
|
23
|
-
|
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
|
-
|
153
|
-
|
154
|
-
|
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"
|
data/lib/webdriver/version.rb
CHANGED
data/lib/webdriver/window.rb
CHANGED
@@ -3,7 +3,20 @@ module Webdriver
|
|
3
3
|
attr_reader :id
|
4
4
|
def initialize(id, connection)
|
5
5
|
@id = id
|
6
|
-
@
|
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
|
-
@
|
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
|
-
@
|
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
|
-
@
|
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.
|
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-
|
11
|
+
date: 2020-09-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|