watir 6.15.1 → 6.16.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +3 -2
  3. data/.travis.yml +2 -0
  4. data/CHANGES.md +13 -0
  5. data/Rakefile +6 -0
  6. data/lib/watir.rb +1 -0
  7. data/lib/watir/browser.rb +4 -1
  8. data/lib/watir/element_collection.rb +27 -17
  9. data/lib/watir/elements/element.rb +41 -14
  10. data/lib/watir/elements/iframe.rb +3 -1
  11. data/lib/watir/elements/radio.rb +7 -2
  12. data/lib/watir/elements/select.rb +1 -0
  13. data/lib/watir/locators.rb +21 -21
  14. data/lib/watir/locators/button/matcher.rb +40 -0
  15. data/lib/watir/locators/cell/selector_builder.rb +3 -0
  16. data/lib/watir/locators/element/locator.rb +29 -172
  17. data/lib/watir/locators/element/matcher.rb +127 -0
  18. data/lib/watir/locators/element/selector_builder.rb +69 -23
  19. data/lib/watir/locators/element/selector_builder/xpath.rb +3 -10
  20. data/lib/watir/locators/row/selector_builder.rb +5 -5
  21. data/lib/watir/locators/text_area/selector_builder.rb +0 -14
  22. data/lib/watir/locators/text_area/selector_builder/xpath.rb +2 -2
  23. data/lib/watir/locators/text_field/matcher.rb +38 -0
  24. data/lib/watir/radio_set.rb +28 -31
  25. data/lib/watir/scroll.rb +69 -0
  26. data/lib/watir/version.rb +1 -1
  27. data/spec/locator_spec_helper.rb +58 -14
  28. data/spec/unit/element_locator_spec.rb +46 -591
  29. data/spec/unit/match_elements/button_spec.rb +80 -0
  30. data/spec/unit/match_elements/element_spec.rb +368 -0
  31. data/spec/unit/match_elements/text_field_spec.rb +79 -0
  32. data/spec/unit/selector_builder/anchor_spec.rb +51 -0
  33. data/spec/unit/selector_builder/button_spec.rb +206 -0
  34. data/spec/unit/selector_builder/cell_spec.rb +63 -0
  35. data/spec/unit/selector_builder/element_spec.rb +744 -0
  36. data/spec/unit/selector_builder/row_spec.rb +111 -0
  37. data/spec/unit/selector_builder/text_field_spec.rb +189 -0
  38. data/spec/unit/selector_builder/textarea_spec.rb +25 -0
  39. data/spec/watirspec/browser_spec.rb +7 -8
  40. data/spec/watirspec/element_hidden_spec.rb +1 -2
  41. data/spec/watirspec/elements/element_spec.rb +52 -16
  42. data/spec/watirspec/elements/iframe_spec.rb +1 -1
  43. data/spec/watirspec/elements/select_list_spec.rb +1 -1
  44. data/spec/watirspec/html/obscured.html +3 -1
  45. data/spec/watirspec/html/scroll.html +32 -0
  46. data/spec/watirspec/relaxed_locate_spec.rb +6 -1
  47. data/spec/watirspec/scroll_spec.rb +106 -0
  48. data/spec/watirspec/support/rspec_matchers.rb +2 -0
  49. data/spec/watirspec/wait_spec.rb +1 -1
  50. data/watir.gemspec +2 -4
  51. metadata +36 -33
  52. data/lib/watir/locators/button/locator.rb +0 -32
  53. data/lib/watir/locators/button/validator.rb +0 -17
  54. data/lib/watir/locators/cell/locator.rb +0 -13
  55. data/lib/watir/locators/element/validator.rb +0 -11
  56. data/lib/watir/locators/row/locator.rb +0 -13
  57. data/lib/watir/locators/text_field/locator.rb +0 -31
  58. data/lib/watir/locators/text_field/validator.rb +0 -13
  59. data/spec/unit/anchor_locator_spec.rb +0 -68
  60. data/spec/watirspec/selector_builder/button_spec.rb +0 -250
  61. data/spec/watirspec/selector_builder/cell_spec.rb +0 -92
  62. data/spec/watirspec/selector_builder/element_spec.rb +0 -628
  63. data/spec/watirspec/selector_builder/row_spec.rb +0 -148
  64. data/spec/watirspec/selector_builder/text_spec.rb +0 -199
@@ -23,7 +23,7 @@ describe 'IFrame' do
23
23
  end
24
24
 
25
25
  it 'locates an element defined by Selenium Element' do
26
- iframe = browser.iframe(id: 'iframe_1').tap(&:exists?)
26
+ iframe = browser.iframe(id: 'iframe_1').locate
27
27
  se_element = iframe.instance_variable_get('@element')
28
28
  iframe2 = browser.element(element: se_element).to_subtype
29
29
  expect(iframe2).to eq iframe
@@ -346,7 +346,7 @@ describe 'SelectList' do
346
346
  end
347
347
 
348
348
  it "raises NoValueFoundException if the option doesn't exist" do
349
- message = /#<Watir::Select: located: true; {:name=>"new_user_country", :tag_name=>"select"}>/
349
+ message = /#<Watir::Select: located: false; {:name=>"new_user_country", :tag_name=>"select"}>/
350
350
  expect { browser.select_list(name: 'new_user_country').select('missing_option') }
351
351
  .to raise_no_value_found_exception message
352
352
  expect { browser.select_list(name: 'new_user_country').select(/missing_option/) }
@@ -29,6 +29,8 @@
29
29
 
30
30
  <button style="position: absolute; width: 0; height: 0; top: -500px; left: -500px; overflow: hidden" id="off_screen">off-screen</button>
31
31
  <button style="display: none;" id="hidden">hidden</button>
32
- <button style="position: absolute; top: 5000px;" id="requires_scrolling">requires scrolling</button>
32
+ <div id="requires_scrolling_container">
33
+ <button style="position: absolute; top: 5000px;" id="requires_scrolling">requires scrolling</button>'
34
+ </div>
33
35
  </body>
34
36
  </html>
@@ -0,0 +1,32 @@
1
+ <html>
2
+ <head>
3
+ <script>
4
+ function isElementInViewport(el) {
5
+ var top = el.offsetTop;
6
+ var left = el.offsetLeft;
7
+ var width = el.offsetWidth;
8
+ var height = el.offsetHeight;
9
+
10
+ while (el.offsetParent) {
11
+ el = el.offsetParent;
12
+ top += el.offsetTop;
13
+ left += el.offsetLeft;
14
+ }
15
+
16
+ return (
17
+ top < (window.pageYOffset + window.innerHeight) &&
18
+ left < (window.pageXOffset + window.innerWidth) &&
19
+ (top + height) > window.pageYOffset &&
20
+ (left + width) > window.pageXOffset
21
+ );
22
+ }
23
+ </script>
24
+ </head>
25
+ <body>
26
+ <div style="height: 180%; position: relative;">
27
+ <button style="position: absolute;">Top</button>
28
+ <button style="position: absolute; top: 50%;">Center</button>
29
+ <button style="position: absolute; bottom: 0;">Bottom</button>
30
+ </div>
31
+ </body>
32
+ </html>
@@ -71,8 +71,13 @@ describe 'Watir#relaxed_locate?' do
71
71
  end
72
72
  end
73
73
 
74
+ it 'does not wait for parent element to be present when querying child element' do
75
+ el = browser.element(id: 'not_there').element(id: 'doesnt_matter')
76
+ expect { el.present? }.to execute_immediately
77
+ end
78
+
74
79
  it 'waits for parent element to be present before locating a collection' do
75
- els = browser.element(id: 'not_there').elements(id: 'doesnt_matter')
80
+ els = browser.element(id: /not|there/).elements(id: 'doesnt_matter')
76
81
  expect { els.to_a }.to wait_and_raise_unknown_object_exception
77
82
  end
78
83
  end
@@ -0,0 +1,106 @@
1
+ require 'watirspec_helper'
2
+
3
+ describe Watir::Scrolling do
4
+ before(:each) do
5
+ browser.goto(WatirSpec.url_for('scroll.html'))
6
+ end
7
+
8
+ def visible?(element)
9
+ browser.execute_script('return isElementInViewport(arguments[0]);', element)
10
+ end
11
+
12
+ context 'when scrolling Browser' do
13
+ describe '#to' do
14
+ it 'scrolls to the top of the page' do
15
+ browser.scroll.to :bottom
16
+ browser.scroll.to :top
17
+ expect(visible?(browser.button(text: 'Top'))).to eq(true)
18
+ expect(visible?(browser.button(text: 'Center'))).to eq(true)
19
+ expect(visible?(browser.button(text: 'Bottom'))).to eq(false)
20
+ end
21
+
22
+ it 'scrolls to the center of the page' do
23
+ browser.scroll.to :center
24
+ expect(visible?(browser.button(text: 'Top'))).to eq(false)
25
+ expect(visible?(browser.button(text: 'Center'))).to eq(true)
26
+ expect(visible?(browser.button(text: 'Bottom'))).to eq(false)
27
+ end
28
+
29
+ it 'scrolls to the bottom of the page' do
30
+ browser.scroll.to :bottom
31
+ expect(visible?(browser.button(text: 'Top'))).to eq(false)
32
+ expect(visible?(browser.button(text: 'Center'))).to eq(true)
33
+ expect(visible?(browser.button(text: 'Bottom'))).to eq(true)
34
+ end
35
+
36
+ it 'scrolls to coordinates' do
37
+ button = browser.button(text: 'Bottom')
38
+ browser.scroll.to [button.wd.location.x, button.wd.location.y]
39
+ expect(visible?(button)).to eq(true)
40
+ end
41
+
42
+ it 'raises error when scroll point is not vaild' do
43
+ expect { browser.scroll.to(:blah) }.to raise_error(ArgumentError)
44
+ end
45
+ end
46
+
47
+ describe '#by' do
48
+ it 'offset' do
49
+ browser.scroll.to :bottom
50
+ browser.scroll.by(-10_000, -10_000)
51
+
52
+ expect(visible?(browser.button(text: 'Top'))).to eq(true)
53
+ expect(visible?(browser.button(text: 'Center'))).to eq(true)
54
+ expect(visible?(browser.button(text: 'Bottom'))).to eq(false)
55
+ end
56
+ end
57
+ end
58
+
59
+ context 'when scrolling Element' do
60
+ describe '#to' do
61
+ it 'scrolls to element (top)' do
62
+ browser.button(text: 'Center').scroll.to
63
+ expect(visible?(browser.button(text: 'Top'))).to eq(false)
64
+ expect(visible?(browser.button(text: 'Center'))).to eq(true)
65
+ expect(visible?(browser.button(text: 'Bottom'))).to eq(true)
66
+ end
67
+
68
+ it 'scrolls to element (center)' do
69
+ browser.button(text: 'Center').scroll.to :center
70
+ expect(visible?(browser.button(text: 'Top'))).to eq(false)
71
+ expect(visible?(browser.button(text: 'Center'))).to eq(true)
72
+ expect(visible?(browser.button(text: 'Bottom'))).to eq(false)
73
+ end
74
+
75
+ it 'scrolls to element (bottom)' do
76
+ browser.button(text: 'Center').scroll.to :bottom
77
+ expect(visible?(browser.button(text: 'Top'))).to eq(true)
78
+ expect(visible?(browser.button(text: 'Center'))).to eq(true)
79
+ expect(visible?(browser.button(text: 'Bottom'))).to eq(false)
80
+ end
81
+
82
+ it 'scrolls to element multiple times' do
83
+ 2.times do
84
+ browser.button(text: 'Center').scroll.to(:center)
85
+ expect(visible?(browser.button(text: 'Top'))).to eq(false)
86
+ end
87
+ end
88
+
89
+ it 'raises error when scroll param is not vaild' do
90
+ expect { browser.button(text: 'Top').scroll.to(:blah) }.to raise_error(ArgumentError)
91
+ end
92
+ end
93
+
94
+ describe '#by' do
95
+ it 'offset' do
96
+ browser.scroll.to :bottom
97
+ button = browser.button(text: 'Bottom')
98
+ button.scroll.by(-10_000, -10_000) # simulate scrolling to top
99
+
100
+ expect(visible?(browser.button(text: 'Top'))).to eq(true)
101
+ expect(visible?(browser.button(text: 'Center'))).to eq(true)
102
+ expect(visible?(browser.button(text: 'Bottom'))).to eq(false)
103
+ end
104
+ end
105
+ end
106
+ end
@@ -1,5 +1,6 @@
1
1
  if defined?(RSpec)
2
2
  DEPRECATION_WARNINGS = %i[selector_parameters
3
+ element_cache
3
4
  ready_state
4
5
  class_array
5
6
  use_capabilities
@@ -10,6 +11,7 @@ if defined?(RSpec)
10
11
  stale_visible
11
12
  stale_present
12
13
  select_by
14
+ value_button
13
15
  wait_until_present
14
16
  wait_while_present].freeze
15
17
 
@@ -167,7 +167,7 @@ describe Watir::Element do
167
167
  end
168
168
 
169
169
  it 'does not error when element goes stale' do
170
- element = browser.div(id: 'foo').tap(&:exists?)
170
+ element = browser.div(id: 'foo').locate
171
171
 
172
172
  allow(element).to receive(:stale?).and_return(false, true)
173
173
 
data/watir.gemspec CHANGED
@@ -26,7 +26,7 @@ Gem::Specification.new do |s|
26
26
  s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
27
27
  s.require_paths = ['lib']
28
28
 
29
- s.add_dependency 'selenium-webdriver', '~> 3.4', '>= 3.4.1'
29
+ s.add_dependency 'selenium-webdriver', '~> 3.6'
30
30
  s.add_runtime_dependency 'regexp_parser', '~>1.2'
31
31
 
32
32
  s.add_development_dependency 'activesupport', '~> 4.0', '>= 4.1.11' # for pluralization during code generation
@@ -41,9 +41,7 @@ Gem::Specification.new do |s|
41
41
  s.add_development_dependency 'selenium_statistics'
42
42
  s.add_development_dependency 'simplecov'
43
43
  s.add_development_dependency 'simplecov-console'
44
- # This forces chromedriver 2.42 since 2.43 breaks some alert / windows things
45
- # https://bugs.chromium.org/p/chromedriver/issues/detail?id=2615
46
- s.add_development_dependency 'webdrivers', '= 3.4.1'
44
+ s.add_development_dependency 'webdrivers', '~> 3.4.2'
47
45
  s.add_development_dependency 'webidl', '>= 0.2.2'
48
46
  s.add_development_dependency 'yard', '> 0.8.2.1'
49
47
  s.add_development_dependency 'yard-doctest', '>= 0.1.8'
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.15.1
4
+ version: 6.16.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Rodionov
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-12-04 00:00:00.000000000 Z
12
+ date: 2018-12-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: selenium-webdriver
@@ -17,20 +17,14 @@ dependencies:
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '3.4'
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: 3.4.1
20
+ version: '3.6'
24
21
  type: :runtime
25
22
  prerelease: false
26
23
  version_requirements: !ruby/object:Gem::Requirement
27
24
  requirements:
28
25
  - - "~>"
29
26
  - !ruby/object:Gem::Version
30
- version: '3.4'
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: 3.4.1
27
+ version: '3.6'
34
28
  - !ruby/object:Gem::Dependency
35
29
  name: regexp_parser
36
30
  requirement: !ruby/object:Gem::Requirement
@@ -223,16 +217,16 @@ dependencies:
223
217
  name: webdrivers
224
218
  requirement: !ruby/object:Gem::Requirement
225
219
  requirements:
226
- - - '='
220
+ - - "~>"
227
221
  - !ruby/object:Gem::Version
228
- version: 3.4.1
222
+ version: 3.4.2
229
223
  type: :development
230
224
  prerelease: false
231
225
  version_requirements: !ruby/object:Gem::Requirement
232
226
  requirements:
233
- - - '='
227
+ - - "~>"
234
228
  - !ruby/object:Gem::Version
235
- version: 3.4.1
229
+ version: 3.4.2
236
230
  - !ruby/object:Gem::Dependency
237
231
  name: webidl
238
232
  requirement: !ruby/object:Gem::Requirement
@@ -379,33 +373,30 @@ files:
379
373
  - lib/watir/legacy_wait.rb
380
374
  - lib/watir/locators.rb
381
375
  - lib/watir/locators/anchor/selector_builder.rb
382
- - lib/watir/locators/button/locator.rb
376
+ - lib/watir/locators/button/matcher.rb
383
377
  - lib/watir/locators/button/selector_builder.rb
384
378
  - lib/watir/locators/button/selector_builder/xpath.rb
385
- - lib/watir/locators/button/validator.rb
386
- - lib/watir/locators/cell/locator.rb
387
379
  - lib/watir/locators/cell/selector_builder.rb
388
380
  - lib/watir/locators/cell/selector_builder/xpath.rb
389
381
  - lib/watir/locators/element/locator.rb
382
+ - lib/watir/locators/element/matcher.rb
390
383
  - lib/watir/locators/element/selector_builder.rb
391
384
  - lib/watir/locators/element/selector_builder/regexp_disassembler.rb
392
385
  - lib/watir/locators/element/selector_builder/xpath.rb
393
386
  - lib/watir/locators/element/selector_builder/xpath_support.rb
394
- - lib/watir/locators/element/validator.rb
395
- - lib/watir/locators/row/locator.rb
396
387
  - lib/watir/locators/row/selector_builder.rb
397
388
  - lib/watir/locators/row/selector_builder/xpath.rb
398
389
  - lib/watir/locators/text_area/selector_builder.rb
399
390
  - lib/watir/locators/text_area/selector_builder/xpath.rb
400
- - lib/watir/locators/text_field/locator.rb
391
+ - lib/watir/locators/text_field/matcher.rb
401
392
  - lib/watir/locators/text_field/selector_builder.rb
402
393
  - lib/watir/locators/text_field/selector_builder/xpath.rb
403
- - lib/watir/locators/text_field/validator.rb
404
394
  - lib/watir/logger.rb
405
395
  - lib/watir/navigation.rb
406
396
  - lib/watir/radio_set.rb
407
397
  - lib/watir/row_container.rb
408
398
  - lib/watir/screenshot.rb
399
+ - lib/watir/scroll.rb
409
400
  - lib/watir/user_editable.rb
410
401
  - lib/watir/version.rb
411
402
  - lib/watir/wait.rb
@@ -422,11 +413,20 @@ files:
422
413
  - spec/implementation_spec.rb
423
414
  - spec/locator_spec_helper.rb
424
415
  - spec/spec_helper.rb
425
- - spec/unit/anchor_locator_spec.rb
426
416
  - spec/unit/capabilities_spec.rb
427
417
  - spec/unit/container_spec.rb
428
418
  - spec/unit/element_locator_spec.rb
429
419
  - spec/unit/logger_spec.rb
420
+ - spec/unit/match_elements/button_spec.rb
421
+ - spec/unit/match_elements/element_spec.rb
422
+ - spec/unit/match_elements/text_field_spec.rb
423
+ - spec/unit/selector_builder/anchor_spec.rb
424
+ - spec/unit/selector_builder/button_spec.rb
425
+ - spec/unit/selector_builder/cell_spec.rb
426
+ - spec/unit/selector_builder/element_spec.rb
427
+ - spec/unit/selector_builder/row_spec.rb
428
+ - spec/unit/selector_builder/text_field_spec.rb
429
+ - spec/unit/selector_builder/textarea_spec.rb
430
430
  - spec/unit/unit_helper.rb
431
431
  - spec/unit/wait_spec.rb
432
432
  - spec/watirspec/adjacent_spec.rb
@@ -577,6 +577,7 @@ files:
577
577
  - spec/watirspec/html/obscured.html
578
578
  - spec/watirspec/html/removed_element.html
579
579
  - spec/watirspec/html/right_click.html
580
+ - spec/watirspec/html/scroll.html
580
581
  - spec/watirspec/html/special_chars.html
581
582
  - spec/watirspec/html/tables.html
582
583
  - spec/watirspec/html/timeout_window_location.html
@@ -587,11 +588,7 @@ files:
587
588
  - spec/watirspec/radio_set_spec.rb
588
589
  - spec/watirspec/relaxed_locate_spec.rb
589
590
  - spec/watirspec/screenshot_spec.rb
590
- - spec/watirspec/selector_builder/button_spec.rb
591
- - spec/watirspec/selector_builder/cell_spec.rb
592
- - spec/watirspec/selector_builder/element_spec.rb
593
- - spec/watirspec/selector_builder/row_spec.rb
594
- - spec/watirspec/selector_builder/text_spec.rb
591
+ - spec/watirspec/scroll_spec.rb
595
592
  - spec/watirspec/special_chars_spec.rb
596
593
  - spec/watirspec/support/rspec_matchers.rb
597
594
  - spec/watirspec/user_editable_spec.rb
@@ -631,11 +628,20 @@ test_files:
631
628
  - spec/implementation_spec.rb
632
629
  - spec/locator_spec_helper.rb
633
630
  - spec/spec_helper.rb
634
- - spec/unit/anchor_locator_spec.rb
635
631
  - spec/unit/capabilities_spec.rb
636
632
  - spec/unit/container_spec.rb
637
633
  - spec/unit/element_locator_spec.rb
638
634
  - spec/unit/logger_spec.rb
635
+ - spec/unit/match_elements/button_spec.rb
636
+ - spec/unit/match_elements/element_spec.rb
637
+ - spec/unit/match_elements/text_field_spec.rb
638
+ - spec/unit/selector_builder/anchor_spec.rb
639
+ - spec/unit/selector_builder/button_spec.rb
640
+ - spec/unit/selector_builder/cell_spec.rb
641
+ - spec/unit/selector_builder/element_spec.rb
642
+ - spec/unit/selector_builder/row_spec.rb
643
+ - spec/unit/selector_builder/text_field_spec.rb
644
+ - spec/unit/selector_builder/textarea_spec.rb
639
645
  - spec/unit/unit_helper.rb
640
646
  - spec/unit/wait_spec.rb
641
647
  - spec/watirspec/adjacent_spec.rb
@@ -786,6 +792,7 @@ test_files:
786
792
  - spec/watirspec/html/obscured.html
787
793
  - spec/watirspec/html/removed_element.html
788
794
  - spec/watirspec/html/right_click.html
795
+ - spec/watirspec/html/scroll.html
789
796
  - spec/watirspec/html/special_chars.html
790
797
  - spec/watirspec/html/tables.html
791
798
  - spec/watirspec/html/timeout_window_location.html
@@ -796,11 +803,7 @@ test_files:
796
803
  - spec/watirspec/radio_set_spec.rb
797
804
  - spec/watirspec/relaxed_locate_spec.rb
798
805
  - spec/watirspec/screenshot_spec.rb
799
- - spec/watirspec/selector_builder/button_spec.rb
800
- - spec/watirspec/selector_builder/cell_spec.rb
801
- - spec/watirspec/selector_builder/element_spec.rb
802
- - spec/watirspec/selector_builder/row_spec.rb
803
- - spec/watirspec/selector_builder/text_spec.rb
806
+ - spec/watirspec/scroll_spec.rb
804
807
  - spec/watirspec/special_chars_spec.rb
805
808
  - spec/watirspec/support/rspec_matchers.rb
806
809
  - spec/watirspec/user_editable_spec.rb
@@ -1,32 +0,0 @@
1
- module Watir
2
- module Locators
3
- class Button
4
- class Locator < Element::Locator
5
- private
6
-
7
- def using_selenium(*)
8
- # force watir usage
9
- end
10
-
11
- def matches_values?(element, values_to_match)
12
- return super unless values_to_match.key?(:value)
13
-
14
- copy = values_to_match.dup
15
- value = copy.delete(:value)
16
-
17
- everything_except_value = super(element, copy)
18
-
19
- matches_value = fetch_value(element, :value) =~ /#{value}/
20
- matches_text = fetch_value(element, :text) =~ /#{value}/
21
- if matches_text
22
- Watir.logger.deprecate(':value locator key for finding button text',
23
- 'use :text locator',
24
- ids: [:value_button])
25
- end
26
-
27
- everything_except_value && (matches_value || matches_text)
28
- end
29
- end
30
- end
31
- end
32
- end