watir-webdriver 0.6.3 → 0.6.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGES.md +5 -0
- data/lib/watir-webdriver/locators/element_locator.rb +12 -7
- data/lib/watir-webdriver/version.rb +1 -1
- data/spec/element_locator_spec.rb +2 -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: 4db8bb80c796c2acc7a8e949ae60333ebd5048f6
|
4
|
+
data.tar.gz: 75fae8d53c1f376e2d4791d8d611c45362a88da1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e7e6f4875c630da9586dde5d5e96e4263734ec289e5139112e8f959b4a1a0b09efaf2d785088448e2f9557a416cd72fdb348a6dd7decde716b7775fa781581fd
|
7
|
+
data.tar.gz: 62877fce513d157a993b0b542a6e9c90a45cfac0edffca843c04090aa8dd83f1cfd1b47ecc53c99da8e50a8062c67bd540df692b897761dd984ce32d42556630
|
data/CHANGES.md
CHANGED
@@ -126,10 +126,16 @@ module Watir
|
|
126
126
|
end
|
127
127
|
|
128
128
|
def wd_find_by_regexp_selector(selector, method = :find)
|
129
|
+
parent = @wd
|
129
130
|
rx_selector = delete_regexps_from(selector)
|
130
131
|
|
131
132
|
if rx_selector.has_key?(:label) && should_use_label_element?
|
132
|
-
|
133
|
+
label = label_from_text(rx_selector.delete(:label)) || return
|
134
|
+
if (id = label.attribute(:for))
|
135
|
+
selector[:id] = id
|
136
|
+
else
|
137
|
+
parent = label
|
138
|
+
end
|
133
139
|
end
|
134
140
|
|
135
141
|
how, what = build_wd_selector(selector)
|
@@ -138,7 +144,7 @@ module Watir
|
|
138
144
|
raise Error, "internal error: unable to build WebDriver selector from #{selector.inspect}"
|
139
145
|
end
|
140
146
|
|
141
|
-
elements =
|
147
|
+
elements = parent.find_elements(how, what)
|
142
148
|
elements.__send__(method) { |el| matches_selector?(el, rx_selector) }
|
143
149
|
end
|
144
150
|
|
@@ -157,13 +163,11 @@ module Watir
|
|
157
163
|
end
|
158
164
|
end
|
159
165
|
|
160
|
-
def
|
166
|
+
def label_from_text(label_exp)
|
161
167
|
# TODO: this won't work correctly if @wd is a sub-element
|
162
|
-
|
168
|
+
@wd.find_elements(:tag_name, 'label').find do |el|
|
163
169
|
matches_selector?(el, :text => label_exp)
|
164
170
|
end
|
165
|
-
|
166
|
-
label.attribute(:for) if label
|
167
171
|
end
|
168
172
|
|
169
173
|
def fetch_value(element, how)
|
@@ -360,7 +364,8 @@ module Watir
|
|
360
364
|
"contains(concat(' ', @class, ' '), #{klass})"
|
361
365
|
elsif key == :label && should_use_label_element?
|
362
366
|
# we assume :label means a corresponding label element, not the attribute
|
363
|
-
"
|
367
|
+
text = "normalize-space()=#{XpathSupport.escape value}"
|
368
|
+
"(@id=//label[#{text}]/@for or parent::label[#{text}])"
|
364
369
|
else
|
365
370
|
"#{lhs_for(key)}=#{XpathSupport.escape value}"
|
366
371
|
end
|
@@ -133,9 +133,9 @@ describe Watir::ElementLocator do
|
|
133
133
|
locate_one selector, Watir::Input.attributes
|
134
134
|
end
|
135
135
|
|
136
|
-
it "uses the corresponding <label>'s @for attribute when locating by label" do
|
136
|
+
it "uses the corresponding <label>'s @for attribute or parent::label when locating by label" do
|
137
137
|
translated_type = "translate(@type,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')"
|
138
|
-
expect_one :xpath, ".//input[#{translated_type}='text' and @id=//label[normalize-space()='foo']/@for]"
|
138
|
+
expect_one :xpath, ".//input[#{translated_type}='text' and (@id=//label[normalize-space()='foo']/@for or parent::label[normalize-space()='foo'])]"
|
139
139
|
|
140
140
|
selector = [
|
141
141
|
:tag_name, "input",
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: watir-webdriver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jari Bakken
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-04-
|
11
|
+
date: 2013-04-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: selenium-webdriver
|