watir 6.8.2 → 6.8.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 727cd5c1020e932467833d4750dc61716f60b8fb
4
- data.tar.gz: b0e81b12faace42be3914ef54de2b1d25fddb4cb
3
+ metadata.gz: f82528cb00ff57b97bbc4e8960b4ed829d64b397
4
+ data.tar.gz: 923b153593c0e8585dea3ba7b8666f23a384d329
5
5
  SHA512:
6
- metadata.gz: 4ba07e681cc33793a02bd6a1deff4419bdff895374d7329bb3c55a6c83e820bc9456b56fc4d80ffc2dc9079760615311119b90e5ef76e774f6b85ffc0a506f38
7
- data.tar.gz: bee368388abe7453cd081bfd55c7f8e9e2417016230a373b3451ea89b48ac49b2ce9ce4e6015ebf8a9540dccf96c484e3a5eb1da741f0c8c0d5a39316d91adfc
6
+ metadata.gz: 56daeb06087a30354f7f3ee8efd2a8b3c13f1fc89ddd20b7717db4dd9ac137b9dc7258c927fc96974ce2514fa11610c0990d0dcb9d574c94860a185085d0bdb7
7
+ data.tar.gz: 82ae8b170360fe4dd60793dc2a80271b4fd3acd08f96a91e0b6f691f0cf06e1d295baf5b2a8edc67dead5bdc55904e3e0f2f7708a3b5855c49e0c0b8e8951345
data/CHANGES.md CHANGED
@@ -1,3 +1,7 @@
1
+ ### 6.8.3 (2017-09-07)
2
+
3
+ * Fix bug with non-interactable elements not being waited on (#636)
4
+
1
5
  ### 6.8.2 (2017-09-06)
2
6
 
3
7
  * Fix bug to prevent after_hooks from running when an alert is present
@@ -6,7 +10,7 @@
6
10
  ### 6.8.1 (2017-09-05)
7
11
 
8
12
  * Ignore index locator when value is zero
9
- * Fix bug with `Select#select!` doing partial string matches
13
+ * Fix bug with `Select#select!` doing partial string matches (thanks Justin Ko )
10
14
 
11
15
  ### 6.8.0 (2017-08-28)
12
16
 
@@ -115,6 +115,7 @@ require the watir_css gem - https://github.com/watir/watir_css
115
115
  end
116
116
 
117
117
  end
118
+ require 'watir/locators'
118
119
 
119
120
  require 'watir/attribute_helper'
120
121
  require 'watir/row_container'
@@ -152,7 +153,6 @@ require 'watir/elements/text_field'
152
153
  require 'watir/elements/input'
153
154
  require 'watir/radio_set'
154
155
 
155
- require 'watir/locators'
156
156
  require 'watir/aliases'
157
157
 
158
158
  Watir.tag_to_class.freeze
@@ -6,6 +6,7 @@ module Watir
6
6
 
7
7
  class ElementCollection
8
8
  include Enumerable
9
+ include Locators::ClassHelpers
9
10
 
10
11
  def initialize(query_scope, selector)
11
12
  @query_scope = query_scope
@@ -129,28 +130,6 @@ module Watir
129
130
  @elements ||= locator.locate_all
130
131
  end
131
132
 
132
- def locator_class
133
- Kernel.const_get("#{Watir.locator_namespace}::#{element_class_name}::Locator")
134
- rescue NameError
135
- Kernel.const_get("#{Watir.locator_namespace}::Element::Locator")
136
- end
137
-
138
- def element_validator_class
139
- Kernel.const_get("#{Watir.locator_namespace}::#{element_class_name}::Validator")
140
- rescue NameError
141
- Kernel.const_get("#{Watir.locator_namespace}::Element::Validator")
142
- end
143
-
144
- def selector_builder_class
145
- Kernel.const_get("#{Watir.locator_namespace}::#{element_class_name}::SelectorBuilder")
146
- rescue NameError
147
- Kernel.const_get("#{Watir.locator_namespace}::Element::SelectorBuilder")
148
- end
149
-
150
- def element_class_name
151
- element_class.to_s.split('::').last
152
- end
153
-
154
133
  def element_class
155
134
  Kernel.const_get(self.class.name.sub(/Collection$/, ''))
156
135
  end
@@ -13,6 +13,7 @@ module Watir
13
13
  include Waitable
14
14
  include Adjacent
15
15
  include JSExecution
16
+ include Locators::ClassHelpers
16
17
 
17
18
  attr_accessor :keyword
18
19
  attr_reader :selector
@@ -625,26 +626,8 @@ module Watir
625
626
  raise unknown_exception, "element located, but timed out after #{Watir.default_timeout} seconds, waiting for #{inspect} to be present"
626
627
  end
627
628
 
628
- def locator_class
629
- Kernel.const_get("#{Watir.locator_namespace}::#{element_class_name}::Locator")
630
- rescue NameError
631
- Kernel.const_get("#{Watir.locator_namespace}::Element::Locator")
632
- end
633
-
634
- def element_validator_class
635
- Kernel.const_get("#{Watir.locator_namespace}::#{element_class_name}::Validator")
636
- rescue NameError
637
- Kernel.const_get("#{Watir.locator_namespace}::Element::Validator")
638
- end
639
-
640
- def selector_builder_class
641
- Kernel.const_get("#{Watir.locator_namespace}::#{element_class_name}::SelectorBuilder")
642
- rescue NameError
643
- Kernel.const_get("#{Watir.locator_namespace}::Element::SelectorBuilder")
644
- end
645
-
646
- def element_class_name
647
- self.class.name.split('::').last
629
+ def element_class
630
+ self.class
648
631
  end
649
632
 
650
633
  def attribute?(attribute_name)
@@ -682,10 +665,9 @@ module Watir
682
665
  raise_present unless Wait.timer.remaining_time > 0
683
666
  raise_present unless exist_check == :wait_for_present || exist_check == :wait_for_enabled
684
667
  retry
685
- rescue Selenium::WebDriver::Error::InvalidElementStateError => ex
668
+ rescue Selenium::WebDriver::Error::InvalidElementStateError
686
669
  raise_disabled unless Wait.timer.remaining_time > 0
687
670
  raise_disabled unless exist_check == :wait_for_writable || exist_check == :wait_for_enabled
688
- raise_disabled unless ex.message.include?('user-editable')
689
671
  retry
690
672
  rescue Selenium::WebDriver::Error::NoSuchWindowError
691
673
  raise Exception::NoMatchingWindowFoundException, "browser window was closed"
@@ -21,3 +21,40 @@ require 'watir/locators/text_field/locator'
21
21
  require 'watir/locators/text_field/selector_builder'
22
22
  require 'watir/locators/text_field/selector_builder/xpath'
23
23
  require 'watir/locators/text_field/validator'
24
+
25
+ module Watir
26
+ module Locators
27
+ module ClassHelpers
28
+ def locator_class
29
+ class_from_string("#{Watir.locator_namespace}::#{element_class_name}::Locator") ||
30
+ class_from_string("Watir::Locators::#{element_class_name}::Locator") ||
31
+ class_from_string("#{Watir.locator_namespace}::Element::Locator") ||
32
+ Watir::Locators::Element::Locator
33
+ end
34
+
35
+ def element_validator_class
36
+ class_from_string("#{Watir.locator_namespace}::#{element_class_name}::Validator") ||
37
+ class_from_string("Watir::Locators::#{element_class_name}::Validator") ||
38
+ class_from_string("#{Watir.locator_namespace}::Element::Validator") ||
39
+ Watir::Locators::Element::Validator
40
+ end
41
+
42
+ def selector_builder_class
43
+ class_from_string("#{Watir.locator_namespace}::#{element_class_name}::SelectorBuilder") ||
44
+ class_from_string("Watir::Locators::#{element_class_name}::SelectorBuilder") ||
45
+ class_from_string("#{Watir.locator_namespace}::Element::SelectorBuilder") ||
46
+ Watir::Locators::Element::SelectorBuilder
47
+ end
48
+
49
+ def class_from_string(string)
50
+ Kernel.const_get(string)
51
+ rescue NameError
52
+ nil
53
+ end
54
+
55
+ def element_class_name
56
+ element_class.to_s.split('::').last
57
+ end
58
+ end
59
+ end
60
+ end
@@ -19,7 +19,7 @@ module Watir
19
19
  ]
20
20
 
21
21
  # Regular expressions that can be reliably converted to xpath `contains`
22
- # expressions in order to optimize the .
22
+ # expressions in order to optimize the locator.
23
23
  CONVERTABLE_REGEXP = %r{
24
24
  \A
25
25
  ([^\[\]\\^$.|?*+()]*) # leading literal characters
@@ -139,6 +139,7 @@ module Watir
139
139
  else
140
140
  wd_find_by_regexp_selector(selector, :select)
141
141
  end
142
+ return [] if found.nil?
142
143
  filter_elements found, visible, nil, :multiple
143
144
  end
144
145
 
@@ -181,7 +182,7 @@ module Watir
181
182
 
182
183
  if rx_selector.key?(:label) && selector_builder.should_use_label_element?
183
184
  label = label_from_text(rx_selector.delete(:label)) || return
184
- if (id = label.attribute(:for))
185
+ if (id = label.attribute('for'))
185
186
  selector[:id] = id
186
187
  else
187
188
  query_scope = label
@@ -249,8 +249,8 @@ describe Watir::Locators::Element::Locator do
249
249
 
250
250
  it "handles :label => /regexp/ selector" do
251
251
  label_elements = [
252
- element(tag_name: "label", text: "foo", attributes: { for: "bar"}),
253
- element(tag_name: "label", text: "foob", attributes: { for: "baz"})
252
+ element(tag_name: "label", text: "foo", attributes: { 'for' => "bar"}),
253
+ element(tag_name: "label", text: "foob", attributes: { 'for' => "baz"})
254
254
  ]
255
255
  div_elements = [element(tag_name: "div")]
256
256
 
@@ -98,7 +98,7 @@ describe "Element" do
98
98
  expect(browser.elements(xpath: "//a").length).to eq 1
99
99
  end
100
100
 
101
- it "finds finds several elements by arbitrary attribute" do
101
+ it "finds several elements by arbitrary attribute" do
102
102
  expect(browser.elements(id: /^new_user/).length).to eq 33
103
103
  end
104
104
 
@@ -162,9 +162,9 @@ describe "FileField" do
162
162
  not_compliant_on :internet_explorer, %i(chrome windows) do
163
163
  bug "Raises InvalidArgumentError: File not found", :firefox do
164
164
  it "does not alter its argument" do
165
- value = File.expand_path 'support/travis.sh'
165
+ value = File.expand_path '.travis.yml'
166
166
  browser.file_field.value = value
167
- expect(value).to match /support\/travis\.sh$/
167
+ expect(value).to match /\.travis\.yml$/
168
168
  end
169
169
  end
170
170
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = 'watir'
5
- s.version = '6.8.2'
5
+ s.version = '6.8.3'
6
6
  s.platform = Gem::Platform::RUBY
7
7
  s.authors = ['Alex Rodionov', 'Titus Fortner']
8
8
  s.email = ['p0deje@gmail.com', 'titusfortner@gmail.com']
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.8.2
4
+ version: 6.8.3
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: 2017-09-06 00:00:00.000000000 Z
12
+ date: 2017-09-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: selenium-webdriver