watir 6.16.1 → 6.16.2
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/CHANGES.md +6 -0
- data/lib/watir/after_hooks.rb +4 -1
- data/lib/watir/browser.rb +0 -12
- data/lib/watir/element_collection.rb +1 -1
- data/lib/watir/elements/element.rb +1 -14
- data/lib/watir/elements/iframe.rb +4 -7
- data/lib/watir/locators/button/matcher.rb +2 -2
- data/lib/watir/locators/cell/selector_builder.rb +1 -1
- data/lib/watir/locators/element/locator.rb +6 -2
- data/lib/watir/locators/element/matcher.rb +5 -2
- data/lib/watir/locators/element/selector_builder.rb +20 -13
- data/lib/watir/locators/element/selector_builder/xpath.rb +2 -0
- data/lib/watir/locators/row/selector_builder.rb +2 -2
- data/lib/watir/locators/text_field/matcher.rb +3 -2
- data/lib/watir/version.rb +1 -1
- data/spec/unit/selector_builder/element_spec.rb +25 -5
- data/spec/watirspec/after_hooks_spec.rb +35 -43
- data/spec/watirspec/elements/checkbox_spec.rb +20 -18
- data/spec/watirspec/elements/div_spec.rb +4 -2
- data/spec/watirspec/elements/iframe_spec.rb +1 -2
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d9b4ce5fc3a28e83b85751052967ecdaa6d87b4d
|
|
4
|
+
data.tar.gz: 82dc5e6c96e4f259c12865a198503b39674094b7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f57ef0d029dd2c0bd703d416288a1f65cfd0a1aaab36e33bd79924b54ae5cb796774fa44e2a728e508d1af0cf8e11bb7b595851d0d59b3ee587c5feed42f808e
|
|
7
|
+
data.tar.gz: 18f052aaca388fef0191bf23c115cac21bff5aed3f692d6e5c1794ef13cf555f6745f2b8b569f7f3a760a843226844f6ef53dc43ef9c95efb532bf0e6a7e9d67
|
data/CHANGES.md
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
### 6.16.2 (2018-12-24)
|
|
2
|
+
|
|
3
|
+
* Fix bug merging scope when locating nested elements with css locator (#841)
|
|
4
|
+
* Fix bug with IFrame#to_subtype
|
|
5
|
+
* Improve performance for nested frames
|
|
6
|
+
|
|
1
7
|
### 6.16.1 (2018-12-23)
|
|
2
8
|
|
|
3
9
|
* Improve collection performance with JavaScript (thanks Lucas Tierney)
|
data/lib/watir/after_hooks.rb
CHANGED
|
@@ -65,9 +65,12 @@ module Watir
|
|
|
65
65
|
#
|
|
66
66
|
|
|
67
67
|
def run
|
|
68
|
-
|
|
68
|
+
# We can't just rescue exception because Firefox automatically closes alert when exception raised
|
|
69
|
+
return unless @after_hooks.any? && !@browser.alert.exists?
|
|
69
70
|
|
|
70
71
|
each { |after_hook| after_hook.call(@browser) }
|
|
72
|
+
rescue Selenium::WebDriver::Error::NoSuchWindowError => ex
|
|
73
|
+
Watir.logger.info "Could not execute After Hooks because browser window was closed #{ex}"
|
|
71
74
|
end
|
|
72
75
|
|
|
73
76
|
#
|
data/lib/watir/browser.rb
CHANGED
|
@@ -270,18 +270,6 @@ module Watir
|
|
|
270
270
|
after_hooks.run
|
|
271
271
|
end
|
|
272
272
|
|
|
273
|
-
#
|
|
274
|
-
# @api private
|
|
275
|
-
#
|
|
276
|
-
# Always relocate a Browser to ensure proper context switching
|
|
277
|
-
#
|
|
278
|
-
# @return [Boolean]
|
|
279
|
-
#
|
|
280
|
-
|
|
281
|
-
def relocate?
|
|
282
|
-
true
|
|
283
|
-
end
|
|
284
|
-
|
|
285
273
|
def browser
|
|
286
274
|
self
|
|
287
275
|
end
|
|
@@ -182,7 +182,7 @@ module Watir
|
|
|
182
182
|
end
|
|
183
183
|
|
|
184
184
|
def ensure_context
|
|
185
|
-
@query_scope.locate if @query_scope.
|
|
185
|
+
@query_scope.locate if @query_scope.is_a?(Browser) || @query_scope.located? && @query_scope.stale?
|
|
186
186
|
@query_scope.switch_to! if @query_scope.is_a?(IFrame)
|
|
187
187
|
end
|
|
188
188
|
|
|
@@ -643,19 +643,6 @@ module Watir
|
|
|
643
643
|
@element = element
|
|
644
644
|
end
|
|
645
645
|
|
|
646
|
-
#
|
|
647
|
-
# @api private
|
|
648
|
-
#
|
|
649
|
-
# This is a performance shortcut for ensuring context
|
|
650
|
-
# Returns true if ensuring context requires relocating the element.
|
|
651
|
-
#
|
|
652
|
-
# @return [Boolean]
|
|
653
|
-
#
|
|
654
|
-
|
|
655
|
-
def relocate?
|
|
656
|
-
located? && stale?
|
|
657
|
-
end
|
|
658
|
-
|
|
659
646
|
#
|
|
660
647
|
# @api private
|
|
661
648
|
#
|
|
@@ -733,7 +720,7 @@ module Watir
|
|
|
733
720
|
end
|
|
734
721
|
|
|
735
722
|
def ensure_context
|
|
736
|
-
@query_scope.locate if @query_scope.
|
|
723
|
+
@query_scope.locate if @query_scope.is_a?(Browser) || @query_scope.located? && @query_scope.stale?
|
|
737
724
|
@query_scope.switch_to! if @query_scope.is_a?(IFrame)
|
|
738
725
|
end
|
|
739
726
|
|
|
@@ -65,15 +65,12 @@ module Watir
|
|
|
65
65
|
end
|
|
66
66
|
|
|
67
67
|
#
|
|
68
|
-
#
|
|
69
|
-
#
|
|
70
|
-
# Always relocate a FramedDriver to ensure proper context switching
|
|
71
|
-
#
|
|
72
|
-
# @return [Boolean]
|
|
68
|
+
# Cast this Element instance to a more specific subtype.
|
|
69
|
+
# Cached element needs to be the IFrame element, not the FramedDriver
|
|
73
70
|
#
|
|
74
71
|
|
|
75
|
-
def
|
|
76
|
-
|
|
72
|
+
def to_subtype
|
|
73
|
+
super.tap { |el| el.cache = @element }
|
|
77
74
|
end
|
|
78
75
|
|
|
79
76
|
private
|
|
@@ -25,8 +25,8 @@ module Watir
|
|
|
25
25
|
ids: [:value_button])
|
|
26
26
|
end
|
|
27
27
|
|
|
28
|
-
def validate_tag(element,
|
|
29
|
-
tag_name = element
|
|
28
|
+
def validate_tag(element, _expected)
|
|
29
|
+
tag_name = fetch_value(element, :tag_name)
|
|
30
30
|
return unless %w[input button].include?(tag_name)
|
|
31
31
|
|
|
32
32
|
# TODO: - Verify this is desired behavior based on https://bugzilla.mozilla.org/show_bug.cgi?id=1290963
|
|
@@ -14,7 +14,7 @@ module Watir
|
|
|
14
14
|
|
|
15
15
|
def locate(built)
|
|
16
16
|
@built = built.dup
|
|
17
|
-
@driver_scope =
|
|
17
|
+
@driver_scope = locator_scope.wd
|
|
18
18
|
matching_elements(@built, :first)
|
|
19
19
|
rescue Selenium::WebDriver::Error::NoSuchElementError
|
|
20
20
|
nil
|
|
@@ -22,7 +22,7 @@ module Watir
|
|
|
22
22
|
|
|
23
23
|
def locate_all(built)
|
|
24
24
|
@built = built.dup
|
|
25
|
-
@driver_scope =
|
|
25
|
+
@driver_scope = locator_scope.wd
|
|
26
26
|
raise ArgumentError, "can't locate all elements by :index" if built.key?(:index)
|
|
27
27
|
|
|
28
28
|
[matching_elements(@built, :all)].flatten
|
|
@@ -52,6 +52,10 @@ module Watir
|
|
|
52
52
|
end
|
|
53
53
|
end
|
|
54
54
|
|
|
55
|
+
def locator_scope
|
|
56
|
+
@built.delete(:scope) || @query_scope.browser
|
|
57
|
+
end
|
|
58
|
+
|
|
55
59
|
def locate_element(how, what, scope = driver_scope)
|
|
56
60
|
scope.find_element(how, what)
|
|
57
61
|
end
|
|
@@ -82,6 +82,8 @@ module Watir
|
|
|
82
82
|
|
|
83
83
|
def fetch_value(element, how)
|
|
84
84
|
case how
|
|
85
|
+
when :tag_name
|
|
86
|
+
element.tag_name.downcase
|
|
85
87
|
when :text
|
|
86
88
|
element.text
|
|
87
89
|
when :visible
|
|
@@ -106,8 +108,9 @@ module Watir
|
|
|
106
108
|
idx.abs - 1
|
|
107
109
|
end
|
|
108
110
|
|
|
109
|
-
def validate_tag(element,
|
|
110
|
-
|
|
111
|
+
def validate_tag(element, expected)
|
|
112
|
+
tag_name = fetch_value(element, :tag_name)
|
|
113
|
+
matches_values?(tag_name, expected)
|
|
111
114
|
end
|
|
112
115
|
|
|
113
116
|
def deprecate_text_regexp(element, selector)
|
|
@@ -31,7 +31,7 @@ module Watir
|
|
|
31
31
|
inspected = selector.inspect
|
|
32
32
|
scope = @query_scope unless @selector.key?(:scope) || @query_scope.is_a?(Watir::Browser)
|
|
33
33
|
|
|
34
|
-
@built =
|
|
34
|
+
@built = wd_locators.empty? ? build_wd_selector(@selector) : @selector
|
|
35
35
|
@built.delete(:index) if @built[:index]&.zero?
|
|
36
36
|
@built[:scope] = scope if scope
|
|
37
37
|
|
|
@@ -39,17 +39,16 @@ module Watir
|
|
|
39
39
|
@built
|
|
40
40
|
end
|
|
41
41
|
|
|
42
|
-
def
|
|
43
|
-
|
|
42
|
+
def wd_locators
|
|
43
|
+
Watir::Locators::W3C_FINDERS & @selector.keys
|
|
44
44
|
end
|
|
45
45
|
|
|
46
46
|
private
|
|
47
47
|
|
|
48
48
|
def normalize_selector
|
|
49
|
-
wd_locators = @selector.keys & Watir::Locators::W3C_FINDERS
|
|
50
49
|
raise LocatorException, "Can not locate element with #{wd_locators}" if wd_locators.size > 1
|
|
51
50
|
|
|
52
|
-
@selector[:scope] = @query_scope.selector_builder.built if
|
|
51
|
+
@selector[:scope] = @query_scope.selector_builder.built if merge_scope?
|
|
53
52
|
|
|
54
53
|
if @selector.key?(:class) || @selector.key?(:class_name)
|
|
55
54
|
classes = ([@selector[:class]].flatten + [@selector.delete(:class_name)].flatten).compact
|
|
@@ -75,13 +74,13 @@ module Watir
|
|
|
75
74
|
end
|
|
76
75
|
end
|
|
77
76
|
|
|
78
|
-
def
|
|
79
|
-
return false
|
|
77
|
+
def merge_scope?
|
|
78
|
+
return false unless (Watir::Locators::W3C_FINDERS + [:adjacent] & @selector.keys).empty?
|
|
80
79
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
80
|
+
return false if [Watir::Browser, Watir::IFrame].any? { |k| @query_scope.is_a?(k) }
|
|
81
|
+
|
|
82
|
+
scope_invalid_locators = @query_scope.selector_builder.built.keys.reject { |key| key == wd_locator }
|
|
83
|
+
scope_invalid_locators.empty?
|
|
85
84
|
end
|
|
86
85
|
|
|
87
86
|
def deprecate_class_array(class_name)
|
|
@@ -142,9 +141,17 @@ module Watir
|
|
|
142
141
|
@custom_attributes << attribute.to_s
|
|
143
142
|
end
|
|
144
143
|
|
|
145
|
-
#
|
|
144
|
+
# Extensions implement this method when creating a different selector builder
|
|
145
|
+
def implementation_class
|
|
146
|
+
Kernel.const_get("#{self.class.name}::XPath")
|
|
147
|
+
end
|
|
148
|
+
|
|
146
149
|
def build_wd_selector(selector)
|
|
147
|
-
|
|
150
|
+
implementation_class.new.build(selector)
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
def wd_locator
|
|
154
|
+
implementation_class::LOCATOR
|
|
148
155
|
end
|
|
149
156
|
|
|
150
157
|
def valid_attribute?(attribute)
|
|
@@ -4,10 +4,10 @@ module Watir
|
|
|
4
4
|
class SelectorBuilder < Element::SelectorBuilder
|
|
5
5
|
def build_wd_selector(selector)
|
|
6
6
|
scope_tag_name = @query_scope.selector[:tag_name] || @query_scope.tag_name
|
|
7
|
-
|
|
7
|
+
implementation_class.new.build(selector, scope_tag_name)
|
|
8
8
|
end
|
|
9
9
|
|
|
10
|
-
def
|
|
10
|
+
def merge_scope?
|
|
11
11
|
false
|
|
12
12
|
end
|
|
13
13
|
end
|
|
@@ -29,8 +29,9 @@ module Watir
|
|
|
29
29
|
# does not apply to text_field
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
-
def validate_tag(element,
|
|
33
|
-
|
|
32
|
+
def validate_tag(element, _expected)
|
|
33
|
+
tag_name = fetch_value(element, :tag_name)
|
|
34
|
+
matches_values?(tag_name, 'input')
|
|
34
35
|
end
|
|
35
36
|
end
|
|
36
37
|
end
|
data/lib/watir/version.rb
CHANGED
|
@@ -44,7 +44,7 @@ describe Watir::Locators::Element::SelectorBuilder do
|
|
|
44
44
|
|
|
45
45
|
it 'raises exception when using xpath & css' do
|
|
46
46
|
selector = {xpath: './/*', css: 'div'}
|
|
47
|
-
msg = 'Can not locate element with [:
|
|
47
|
+
msg = 'Can not locate element with [:css, :xpath]'
|
|
48
48
|
|
|
49
49
|
expect { selector_builder.build(selector) }.to raise_exception Watir::Exception::LocatorException, msg
|
|
50
50
|
end
|
|
@@ -668,9 +668,9 @@ describe Watir::Locators::Element::SelectorBuilder do
|
|
|
668
668
|
end
|
|
669
669
|
end
|
|
670
670
|
|
|
671
|
-
context 'with element scope' do
|
|
671
|
+
context 'with generic element scope' do
|
|
672
672
|
let(:query_scope) { instance_double Watir::HTMLElement }
|
|
673
|
-
let(:scope_built) {
|
|
673
|
+
let(:scope_built) { {xpath: ".//*[local-name()='div'][@id='table-rows-test']"} }
|
|
674
674
|
|
|
675
675
|
before do
|
|
676
676
|
allow(query_scope).to receive(:selector_builder).and_return(selector_builder)
|
|
@@ -709,11 +709,31 @@ describe Watir::Locators::Element::SelectorBuilder do
|
|
|
709
709
|
expect(build_selector.delete(:scope)).to_not be_nil
|
|
710
710
|
expect(build_selector).to eq built
|
|
711
711
|
end
|
|
712
|
+
end
|
|
713
|
+
|
|
714
|
+
context 'with invalid query scopes' do
|
|
715
|
+
let(:query_scope) { instance_double Watir::HTMLElement }
|
|
712
716
|
|
|
713
717
|
it 'does not use scope if query_scope built has multiple keys' do
|
|
718
|
+
scope_built = {xpath: ".//*[local-name()='div']", visible: true}
|
|
719
|
+
allow(selector_builder).to receive(:built).and_return(scope_built)
|
|
720
|
+
allow(query_scope).to receive(:selector_builder).and_return(selector_builder)
|
|
721
|
+
|
|
722
|
+
selector = {tag_name: 'div'}
|
|
723
|
+
built = {xpath: ".//*[local-name()='div']"}
|
|
724
|
+
|
|
725
|
+
build_selector = selector_builder.build(selector)
|
|
726
|
+
expect(build_selector.delete(:scope)).to_not be_nil
|
|
727
|
+
expect(build_selector).to eq built
|
|
728
|
+
end
|
|
729
|
+
|
|
730
|
+
it 'does not use scope if query_scope uses different Selenium Locator' do
|
|
731
|
+
scope_built = {css: '#foo'}
|
|
732
|
+
allow(selector_builder).to receive(:built).and_return(scope_built)
|
|
733
|
+
allow(query_scope).to receive(:selector_builder).and_return(selector_builder)
|
|
734
|
+
|
|
714
735
|
selector = {tag_name: 'div'}
|
|
715
736
|
built = {xpath: ".//*[local-name()='div']"}
|
|
716
|
-
scope_built[:visible] = true
|
|
717
737
|
|
|
718
738
|
build_selector = selector_builder.build(selector)
|
|
719
739
|
expect(build_selector.delete(:scope)).to_not be_nil
|
|
@@ -721,7 +741,7 @@ describe Watir::Locators::Element::SelectorBuilder do
|
|
|
721
741
|
end
|
|
722
742
|
end
|
|
723
743
|
|
|
724
|
-
context 'with specific scope' do
|
|
744
|
+
context 'with specific element scope' do
|
|
725
745
|
let(:scope_built) { {xpath: ".//*[local-name()='iframe'][@id='one']"} }
|
|
726
746
|
|
|
727
747
|
it 'does not use scope if query scope is an IFrame' do
|
|
@@ -160,64 +160,56 @@ describe 'Browser::AfterHooks' do
|
|
|
160
160
|
end
|
|
161
161
|
|
|
162
162
|
not_compliant_on :safari, :headless do
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
browser.goto WatirSpec.url_for('alerts.html')
|
|
163
|
+
it 'does not run error checks with alert present' do
|
|
164
|
+
browser.goto WatirSpec.url_for('alerts.html')
|
|
166
165
|
|
|
167
|
-
|
|
168
|
-
|
|
166
|
+
@page_after_hook = proc { @yield = browser.title == 'Alerts' }
|
|
167
|
+
browser.after_hooks.add @page_after_hook
|
|
169
168
|
|
|
170
|
-
|
|
171
|
-
|
|
169
|
+
browser.button(id: 'alert').click
|
|
170
|
+
expect(@yield).to be_nil
|
|
172
171
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
end
|
|
172
|
+
browser.alert.ok
|
|
173
|
+
expect(@yield).to eq true
|
|
176
174
|
end
|
|
177
175
|
end
|
|
178
176
|
|
|
179
177
|
not_compliant_on :headless do
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
178
|
+
it 'does not raise error when running error checks using #after_hooks#without with alert present' do
|
|
179
|
+
url = WatirSpec.url_for('alerts.html')
|
|
180
|
+
@page_after_hook = proc { browser.url }
|
|
181
|
+
browser.after_hooks.add @page_after_hook
|
|
182
|
+
browser.goto url
|
|
183
|
+
expect { browser.after_hooks.without { browser.button(id: 'alert').click } }.to_not raise_error
|
|
184
|
+
browser.alert.ok
|
|
185
|
+
end
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
not_compliant_on :headless do
|
|
189
|
+
it 'does not raise error if no error checks are defined with alert present' do
|
|
190
|
+
url = WatirSpec.url_for('alerts.html')
|
|
191
|
+
@page_after_hook = proc { browser.url }
|
|
192
|
+
browser.after_hooks.add @page_after_hook
|
|
193
|
+
browser.goto url
|
|
194
|
+
browser.after_hooks.delete @page_after_hook
|
|
195
|
+
expect { browser.button(id: 'alert').click }.to_not raise_error
|
|
196
|
+
browser.alert.ok
|
|
189
197
|
end
|
|
190
198
|
end
|
|
191
199
|
|
|
192
|
-
bug '
|
|
200
|
+
bug 'https://bugzilla.mozilla.org/show_bug.cgi?id=1223277', :firefox do
|
|
193
201
|
not_compliant_on :headless do
|
|
194
|
-
it 'does not raise error
|
|
195
|
-
url = WatirSpec.url_for('
|
|
202
|
+
it 'does not raise error when running error checks on closed window' do
|
|
203
|
+
url = WatirSpec.url_for('window_switching.html')
|
|
196
204
|
@page_after_hook = proc { browser.url }
|
|
197
205
|
browser.after_hooks.add @page_after_hook
|
|
198
206
|
browser.goto url
|
|
199
|
-
browser.
|
|
200
|
-
expect { browser.button(id: 'alert').click }.to_not raise_error
|
|
201
|
-
browser.alert.ok
|
|
202
|
-
end
|
|
203
|
-
end
|
|
204
|
-
end
|
|
207
|
+
browser.a(id: 'open').click
|
|
205
208
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
url = WatirSpec.url_for('window_switching.html')
|
|
211
|
-
@page_after_hook = proc { browser.url }
|
|
212
|
-
browser.after_hooks.add @page_after_hook
|
|
213
|
-
browser.goto url
|
|
214
|
-
browser.a(id: 'open').click
|
|
215
|
-
|
|
216
|
-
window = browser.window(title: 'closeable window')
|
|
217
|
-
window.use
|
|
218
|
-
expect { browser.a(id: 'close').click }.to_not raise_error
|
|
219
|
-
browser.original_window.use
|
|
220
|
-
end
|
|
209
|
+
window = browser.window(title: 'closeable window')
|
|
210
|
+
window.use
|
|
211
|
+
expect { browser.a(id: 'close').click }.to_not raise_error
|
|
212
|
+
browser.original_window.use
|
|
221
213
|
end
|
|
222
214
|
end
|
|
223
215
|
end
|
|
@@ -26,24 +26,26 @@ describe 'CheckBox' do
|
|
|
26
26
|
expect(browser.checkbox(xpath: "//input[@id='new_user_interests_books']")).to exist
|
|
27
27
|
end
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
expect
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
expect
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
expect
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
expect
|
|
46
|
-
|
|
29
|
+
not_compliant_on :watigiri do
|
|
30
|
+
it 'handles text_regexp deprecations for label locators' do
|
|
31
|
+
expect {
|
|
32
|
+
expect(browser.checkbox(label: /some visible/)).to exist
|
|
33
|
+
}.to_not have_deprecated_text_regexp
|
|
34
|
+
|
|
35
|
+
expect {
|
|
36
|
+
expect(browser.checkbox(label: /some (visible|Jeff)/)).to exist
|
|
37
|
+
}.to_not have_deprecated_text_regexp
|
|
38
|
+
|
|
39
|
+
expect {
|
|
40
|
+
expect(browser.checkbox(label: /this will not match/)).to exist
|
|
41
|
+
}.to_not have_deprecated_text_regexp
|
|
42
|
+
|
|
43
|
+
expect(browser.checkbox(label: /some visible some hidden/)).to_not exist
|
|
44
|
+
|
|
45
|
+
expect {
|
|
46
|
+
expect(browser.checkbox(label: /some visible$/)).to exist
|
|
47
|
+
}.to have_deprecated_text_regexp
|
|
48
|
+
end
|
|
47
49
|
end
|
|
48
50
|
|
|
49
51
|
it 'returns true if the checkbox button exists (search by name and value)' do
|
|
@@ -149,8 +149,10 @@ describe 'Div' do
|
|
|
149
149
|
end
|
|
150
150
|
|
|
151
151
|
# Note: This will work after:text_regexp deprecation removed
|
|
152
|
-
|
|
153
|
-
|
|
152
|
+
not_compliant_on :watigiri do
|
|
153
|
+
it 'does not locate entire content with regular expressions' do
|
|
154
|
+
expect(browser.div(text: /some visible some hidden/)).to_not exist
|
|
155
|
+
end
|
|
154
156
|
end
|
|
155
157
|
end
|
|
156
158
|
end
|
|
@@ -115,7 +115,6 @@ describe 'IFrame' do
|
|
|
115
115
|
not_compliant_on :safari do
|
|
116
116
|
it 'handles nested iframes' do
|
|
117
117
|
browser.goto(WatirSpec.url_for('nested_iframes.html'))
|
|
118
|
-
|
|
119
118
|
browser.iframe(id: 'two').iframe(id: 'three').link(id: 'four').click
|
|
120
119
|
|
|
121
120
|
Watir::Wait.until { browser.title == 'definition_lists' }
|
|
@@ -151,7 +150,7 @@ describe 'IFrame' do
|
|
|
151
150
|
|
|
152
151
|
it 'switches when the frame is created by subtype' do
|
|
153
152
|
subtype = browser.iframe.to_subtype
|
|
154
|
-
expect { subtype.
|
|
153
|
+
expect { subtype.element.locate }.to_not raise_exception
|
|
155
154
|
end
|
|
156
155
|
|
|
157
156
|
it 'switches back to top level browsing context' do
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: watir
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 6.16.
|
|
4
|
+
version: 6.16.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Alex Rodionov
|
|
@@ -10,7 +10,7 @@ authors:
|
|
|
10
10
|
autorequire:
|
|
11
11
|
bindir: bin
|
|
12
12
|
cert_chain: []
|
|
13
|
-
date: 2018-12-
|
|
13
|
+
date: 2018-12-24 00:00:00.000000000 Z
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
16
|
name: selenium-webdriver
|