cuprite 0.8 → 0.9
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/README.md +11 -2
- data/lib/capybara/cuprite.rb +0 -6
- data/lib/capybara/cuprite/browser.rb +15 -5
- data/lib/capybara/cuprite/driver.rb +10 -1
- data/lib/capybara/cuprite/javascripts/index.js +1 -1
- data/lib/capybara/cuprite/page.rb +11 -8
- data/lib/capybara/cuprite/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 979d242c40547bfd784a54a15fa1ba81afc251a805f71880a234b4fd055f3afb
|
4
|
+
data.tar.gz: 433ff62183910210a57f5b1022a7807d3e8dc5ac86dbaf62879660b957a67b94
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5495435618d770085085f9b992646e03e1b1271b20cefc8c7e0f1d4313abd398a161f3b85038e0583bd6834d55adc8052393d2e5dc61c1d395edbe5e90fb29f5
|
7
|
+
data.tar.gz: 64b6b8a516e44642e6dfeb3981081b5e1d7cd0489c4741358f841013f74f8268b6bdaf63017262ed2f70f6d83a8cc4a3c548bf3da33b86409e64695620a8e108
|
data/README.md
CHANGED
@@ -116,17 +116,26 @@ be automatically cleared at the end of the test.
|
|
116
116
|
* `page.driver.network_traffic` Inspect network traffic (resources have been
|
117
117
|
loaded) on the current page. This returns an array of request objects.
|
118
118
|
|
119
|
-
|
120
119
|
```ruby
|
121
120
|
page.driver.network_traffic # => [Request, ...]
|
122
121
|
request = page.driver.network_traffic.first
|
123
122
|
request.response
|
124
123
|
```
|
125
124
|
|
125
|
+
* `page.driver.wait_for_network_idle` Natively waits for network idle and if
|
126
|
+
there are no active connections returns or raises `TimeoutError` error. Accepts
|
127
|
+
the same options as Ferrum's [`wait_for_idle`](https://github.com/route/ferrum#wait_for_idleoptions)
|
128
|
+
|
129
|
+
```ruby
|
130
|
+
page.driver.wait_for_network_idle
|
131
|
+
page.driver.refresh
|
132
|
+
```
|
133
|
+
|
126
134
|
Please note that network traffic is not cleared when you visit new page. You can
|
127
135
|
manually clear the network traffic by calling `page.driver.clear_network_traffic`
|
128
136
|
or `page.driver.reset`
|
129
137
|
|
138
|
+
|
130
139
|
### Manipulating cookies ###
|
131
140
|
|
132
141
|
The following methods are used to inspect and manipulate cookies:
|
@@ -189,7 +198,7 @@ end
|
|
189
198
|
|
190
199
|
## License ##
|
191
200
|
|
192
|
-
Copyright 2018-
|
201
|
+
Copyright 2018-2020 Machinio
|
193
202
|
|
194
203
|
Permission is hereby granted, free of charge, to any person obtaining
|
195
204
|
a copy of this software and associated documentation files (the
|
data/lib/capybara/cuprite.rb
CHANGED
@@ -2,18 +2,12 @@
|
|
2
2
|
|
3
3
|
require "ferrum"
|
4
4
|
require "capybara"
|
5
|
-
|
6
|
-
module Capybara::Cuprite
|
7
|
-
end
|
8
|
-
|
9
5
|
require "capybara/cuprite/driver"
|
10
6
|
require "capybara/cuprite/browser"
|
11
7
|
require "capybara/cuprite/page"
|
12
8
|
require "capybara/cuprite/node"
|
13
9
|
require "capybara/cuprite/errors"
|
14
10
|
|
15
|
-
Ferrum::Page.prepend(Capybara::Cuprite::Page)
|
16
|
-
|
17
11
|
Capybara.register_driver(:cuprite) do |app|
|
18
12
|
Capybara::Cuprite::Driver.new(app)
|
19
13
|
end
|
@@ -23,12 +23,12 @@ module Capybara::Cuprite
|
|
23
23
|
|
24
24
|
def page
|
25
25
|
raise Ferrum::NoSuchPageError if @page.nil?
|
26
|
-
@page ||=
|
26
|
+
@page ||= attach_page
|
27
27
|
end
|
28
28
|
|
29
29
|
def reset
|
30
30
|
super
|
31
|
-
@page =
|
31
|
+
@page = attach_page
|
32
32
|
end
|
33
33
|
|
34
34
|
def quit
|
@@ -81,7 +81,7 @@ module Capybara::Cuprite
|
|
81
81
|
|
82
82
|
if Capybara::VERSION.to_f < 3.0
|
83
83
|
target_id = window_handles.find do |target_id|
|
84
|
-
page =
|
84
|
+
page = attach_page(target_id)
|
85
85
|
locator == page.frame_name
|
86
86
|
end
|
87
87
|
locator = target_id if target_id
|
@@ -100,13 +100,13 @@ module Capybara::Cuprite
|
|
100
100
|
def switch_to_window(target_id)
|
101
101
|
target = targets[target_id]
|
102
102
|
raise Ferrum::NoSuchPageError unless target
|
103
|
-
@page = target.
|
103
|
+
@page = attach_page(target.id)
|
104
104
|
end
|
105
105
|
|
106
106
|
def close_window(target_id)
|
107
107
|
target = targets[target_id]
|
108
108
|
raise Ferrum::NoSuchPageError unless target
|
109
|
-
@page = nil if @page == target.
|
109
|
+
@page = nil if @page.target_id == target.id
|
110
110
|
target.page.close
|
111
111
|
end
|
112
112
|
|
@@ -200,5 +200,15 @@ module Capybara::Cuprite
|
|
200
200
|
end
|
201
201
|
end
|
202
202
|
end
|
203
|
+
|
204
|
+
def attach_page(target_id = nil)
|
205
|
+
target = targets[target_id] if target_id
|
206
|
+
target ||= default_context.default_target
|
207
|
+
return target.page if target.attached?
|
208
|
+
|
209
|
+
target.maybe_sleep_if_new_window
|
210
|
+
target.page = Page.new(target.id, self)
|
211
|
+
target.page
|
212
|
+
end
|
203
213
|
end
|
204
214
|
end
|
@@ -26,6 +26,8 @@ module Capybara::Cuprite
|
|
26
26
|
@screen_size ||= DEFAULT_MAXIMIZE_SCREEN_SIZE
|
27
27
|
|
28
28
|
@options[:save_path] = Capybara.save_path.to_s if Capybara.save_path
|
29
|
+
|
30
|
+
ENV["FERRUM_DEBUG"] = "true" if ENV["CUPRITE_DEBUG"]
|
29
31
|
end
|
30
32
|
|
31
33
|
def needs_server?
|
@@ -129,7 +131,10 @@ module Capybara::Cuprite
|
|
129
131
|
end
|
130
132
|
|
131
133
|
def open_new_window
|
132
|
-
browser.
|
134
|
+
target = browser.default_context.create_target
|
135
|
+
target.maybe_sleep_if_new_window
|
136
|
+
target.page = Page.new(target.id, browser)
|
137
|
+
target.page
|
133
138
|
end
|
134
139
|
|
135
140
|
def switch_to_window(handle)
|
@@ -282,6 +287,10 @@ module Capybara::Cuprite
|
|
282
287
|
browser.cookies.clear
|
283
288
|
end
|
284
289
|
|
290
|
+
def wait_for_network_idle(**options)
|
291
|
+
browser.network.wait_for_idle(**options)
|
292
|
+
end
|
293
|
+
|
285
294
|
def clear_memory_cache
|
286
295
|
browser.network.clear(:cache)
|
287
296
|
end
|
@@ -128,7 +128,7 @@ class Cuprite {
|
|
128
128
|
this.trigger(node, "focus");
|
129
129
|
this.setValue(node, "");
|
130
130
|
|
131
|
-
if (node.type == "number" || node.type == "date") {
|
131
|
+
if (node.type == "number" || node.type == "date" || node.type == "range") {
|
132
132
|
this.setValue(node, value);
|
133
133
|
this.input(node);
|
134
134
|
} else if (node.type == "time") {
|
@@ -3,15 +3,14 @@
|
|
3
3
|
require "forwardable"
|
4
4
|
|
5
5
|
module Capybara::Cuprite
|
6
|
-
|
6
|
+
class Page < Ferrum::Page
|
7
7
|
MODAL_WAIT = ENV.fetch("CUPRITE_MODAL_WAIT", 0.05).to_f
|
8
8
|
TRIGGER_CLICK_WAIT = ENV.fetch("CUPRITE_TRIGGER_CLICK_WAIT", 0.1).to_f
|
9
9
|
|
10
10
|
extend Forwardable
|
11
11
|
delegate %i[at_css at_xpath css xpath
|
12
|
-
current_url current_title body
|
13
|
-
|
14
|
-
|
12
|
+
current_url current_title body execution_id
|
13
|
+
evaluate evaluate_on evaluate_async execute] => :active_frame
|
15
14
|
|
16
15
|
def initialize(*args)
|
17
16
|
@frame_stack = []
|
@@ -114,6 +113,10 @@ module Capybara::Cuprite
|
|
114
113
|
end
|
115
114
|
end
|
116
115
|
|
116
|
+
def frame_name
|
117
|
+
evaluate("window.name")
|
118
|
+
end
|
119
|
+
|
117
120
|
def title
|
118
121
|
active_frame.current_title
|
119
122
|
end
|
@@ -129,15 +132,15 @@ module Capybara::Cuprite
|
|
129
132
|
on(:request) do |request, index, total|
|
130
133
|
if @browser.url_blacklist && !@browser.url_blacklist.empty?
|
131
134
|
if @browser.url_blacklist.any? { |r| request.match?(r) }
|
132
|
-
request.abort and
|
135
|
+
request.abort and next
|
133
136
|
else
|
134
|
-
request.continue and
|
137
|
+
request.continue and next
|
135
138
|
end
|
136
139
|
elsif @browser.url_whitelist && !@browser.url_whitelist.empty?
|
137
140
|
if @browser.url_whitelist.any? { |r| request.match?(r) }
|
138
|
-
request.continue and
|
141
|
+
request.continue and next
|
139
142
|
else
|
140
|
-
request.abort and
|
143
|
+
request.abort and next
|
141
144
|
end
|
142
145
|
elsif index + 1 < total
|
143
146
|
# There are other callbacks that may handle this request
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cuprite
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.9'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dmitry Vorotilin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-01-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: capybara
|
@@ -36,14 +36,14 @@ dependencies:
|
|
36
36
|
requirements:
|
37
37
|
- - "~>"
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: 0.
|
39
|
+
version: 0.7.0
|
40
40
|
type: :runtime
|
41
41
|
prerelease: false
|
42
42
|
version_requirements: !ruby/object:Gem::Requirement
|
43
43
|
requirements:
|
44
44
|
- - "~>"
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: 0.
|
46
|
+
version: 0.7.0
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: image_size
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|