watir-webdriver 0.9.1 → 0.9.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +3 -0
- data/.travis.yml +7 -3
- data/CHANGES.md +6 -0
- data/Rakefile +17 -5
- data/lib/watir-webdriver.rb +16 -6
- data/lib/watir-webdriver/after_hooks.rb +2 -2
- data/lib/watir-webdriver/browser.rb +5 -5
- data/lib/watir-webdriver/cell_container.rb +4 -10
- data/lib/watir-webdriver/element_collection.rb +28 -7
- data/lib/watir-webdriver/elements/button.rb +0 -18
- data/lib/watir-webdriver/elements/cell.rb +17 -0
- data/lib/watir-webdriver/elements/checkbox.rb +0 -3
- data/lib/watir-webdriver/elements/element.rb +37 -10
- data/lib/watir-webdriver/elements/file_field.rb +0 -3
- data/lib/watir-webdriver/elements/hidden.rb +0 -3
- data/lib/watir-webdriver/elements/html_elements.rb +0 -219
- data/lib/watir-webdriver/elements/iframe.rb +29 -19
- data/lib/watir-webdriver/elements/row.rb +17 -0
- data/lib/watir-webdriver/elements/svg_elements.rb +0 -120
- data/lib/watir-webdriver/elements/table.rb +1 -1
- data/lib/watir-webdriver/elements/table_cell.rb +0 -28
- data/lib/watir-webdriver/elements/table_row.rb +1 -30
- data/lib/watir-webdriver/elements/text_area.rb +0 -17
- data/lib/watir-webdriver/elements/text_field.rb +2 -8
- data/lib/watir-webdriver/generator/base/visitor.rb +1 -10
- data/lib/watir-webdriver/locators.rb +22 -0
- data/lib/watir-webdriver/locators/button/locator.rb +38 -0
- data/lib/watir-webdriver/locators/button/selector_builder.rb +27 -0
- data/lib/watir-webdriver/locators/button/selector_builder/xpath.rb +29 -0
- data/lib/watir-webdriver/locators/button/validator.rb +14 -0
- data/lib/watir-webdriver/locators/cell/locator.rb +17 -0
- data/lib/watir-webdriver/locators/cell/selector_builder.rb +24 -0
- data/lib/watir-webdriver/locators/element/locator.rb +249 -0
- data/lib/watir-webdriver/locators/element/selector_builder.rb +147 -0
- data/lib/watir-webdriver/locators/element/selector_builder/css.rb +65 -0
- data/lib/watir-webdriver/locators/element/selector_builder/xpath.rb +72 -0
- data/lib/watir-webdriver/locators/element/validator.rb +22 -0
- data/lib/watir-webdriver/locators/row/locator.rb +17 -0
- data/lib/watir-webdriver/locators/row/selector_builder.rb +29 -0
- data/lib/watir-webdriver/locators/text_area/locator.rb +13 -0
- data/lib/watir-webdriver/locators/text_area/selector_builder.rb +22 -0
- data/lib/watir-webdriver/locators/text_field/locator.rb +42 -0
- data/lib/watir-webdriver/locators/text_field/selector_builder.rb +34 -0
- data/lib/watir-webdriver/locators/text_field/selector_builder/xpath.rb +19 -0
- data/lib/watir-webdriver/locators/text_field/validator.rb +20 -0
- data/lib/watir-webdriver/row_container.rb +3 -9
- data/lib/watir-webdriver/version.rb +1 -1
- data/lib/watir-webdriver/wait.rb +6 -3
- data/spec/always_locate_spec.rb +2 -1
- data/spec/element_locator_spec.rb +1 -1
- data/spec/element_spec.rb +8 -40
- data/spec/implementation.rb +52 -45
- data/spec/locator_spec_helper.rb +8 -2
- data/support/travis.sh +17 -6
- metadata +25 -10
- data/lib/watir-webdriver/locators/button_locator.rb +0 -85
- data/lib/watir-webdriver/locators/child_cell_locator.rb +0 -32
- data/lib/watir-webdriver/locators/child_row_locator.rb +0 -37
- data/lib/watir-webdriver/locators/element_locator.rb +0 -470
- data/lib/watir-webdriver/locators/text_area_locator.rb +0 -24
- data/lib/watir-webdriver/locators/text_field_locator.rb +0 -93
@@ -1,24 +0,0 @@
|
|
1
|
-
module Watir
|
2
|
-
class TextAreaLocator < ElementLocator
|
3
|
-
|
4
|
-
private
|
5
|
-
|
6
|
-
def can_convert_regexp_to_contains?
|
7
|
-
false
|
8
|
-
end
|
9
|
-
|
10
|
-
def normalize_selector(how, what)
|
11
|
-
# We need to iterate through located elements and fetch
|
12
|
-
# attribute value using WebDriver because XPath doesn't understand
|
13
|
-
# difference between IDL vs content attribute.
|
14
|
-
# Current ElementLocator design doesn't allow to do that in any
|
15
|
-
# obvious way except to use regular expression.
|
16
|
-
if how == :value && what.kind_of?(String)
|
17
|
-
[how, Regexp.new('^' + Regexp.escape(what) + '$')]
|
18
|
-
else
|
19
|
-
super
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
end # TextAreaLocator
|
24
|
-
end # Watir
|
@@ -1,93 +0,0 @@
|
|
1
|
-
module Watir
|
2
|
-
class TextFieldLocator < ElementLocator
|
3
|
-
|
4
|
-
NON_TEXT_TYPES = %w[file radio checkbox submit reset image button hidden datetime date month week time datetime-local range color]
|
5
|
-
# TODO: better way of finding input text fields?
|
6
|
-
NEGATIVE_TYPE_EXPR = NON_TEXT_TYPES.map { |type| "%s!=%s" % [XpathSupport.downcase('@type'), type.inspect] }.join(' and ')
|
7
|
-
|
8
|
-
def wd_find_first_by(how, what)
|
9
|
-
how, what = build_wd_selector(how => what) if how == :tag_name
|
10
|
-
super
|
11
|
-
end
|
12
|
-
|
13
|
-
def locate_all
|
14
|
-
find_all_by_multiple
|
15
|
-
end
|
16
|
-
|
17
|
-
private
|
18
|
-
|
19
|
-
def build_wd_selector(selectors)
|
20
|
-
return if selectors.values.any? { |e| e.kind_of? Regexp }
|
21
|
-
|
22
|
-
selectors.delete(:tag_name)
|
23
|
-
|
24
|
-
@building = :textarea
|
25
|
-
textarea_attr_exp = attribute_expression(selectors)
|
26
|
-
|
27
|
-
@building = :input
|
28
|
-
input_attr_exp = attribute_expression(selectors)
|
29
|
-
|
30
|
-
xpath = ".//input[(not(@type) or (#{NEGATIVE_TYPE_EXPR}))"
|
31
|
-
xpath << " and #{input_attr_exp}" unless input_attr_exp.empty?
|
32
|
-
xpath << "] "
|
33
|
-
xpath << "| .//textarea"
|
34
|
-
xpath << "[#{textarea_attr_exp}]" unless textarea_attr_exp.empty?
|
35
|
-
|
36
|
-
p build_wd_selector: xpath if $DEBUG
|
37
|
-
|
38
|
-
[:xpath, xpath]
|
39
|
-
end
|
40
|
-
|
41
|
-
def lhs_for(key)
|
42
|
-
if @building == :input && key == :text
|
43
|
-
"@value"
|
44
|
-
elsif @building == :textarea && key == :value
|
45
|
-
"text()"
|
46
|
-
else
|
47
|
-
super
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
def matches_selector?(element, rx_selector)
|
52
|
-
rx_selector = rx_selector.dup
|
53
|
-
|
54
|
-
tag_name = element.tag_name.downcase
|
55
|
-
|
56
|
-
[:text, :value, :label].each do |key|
|
57
|
-
if rx_selector.key?(key)
|
58
|
-
correct_key = tag_name == 'input' ? :value : :text
|
59
|
-
rx_selector[correct_key] = rx_selector.delete(key)
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
super
|
64
|
-
end
|
65
|
-
|
66
|
-
VALID_TEXT_FIELD_TAGS = %w[input textarea]
|
67
|
-
|
68
|
-
def tag_name_matches?(tag_name, _)
|
69
|
-
VALID_TEXT_FIELD_TAGS.include?(tag_name)
|
70
|
-
end
|
71
|
-
|
72
|
-
def by_id
|
73
|
-
element = super
|
74
|
-
|
75
|
-
if element && !NON_TEXT_TYPES.include?(element.attribute(:type))
|
76
|
-
check_deprecation(element)
|
77
|
-
element
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
def validate_element(element)
|
82
|
-
check_deprecation(element)
|
83
|
-
super
|
84
|
-
end
|
85
|
-
|
86
|
-
def check_deprecation(element)
|
87
|
-
if element.tag_name.downcase == 'textarea'
|
88
|
-
warn "Locating textareas with '#text_field' is deprecated. Please, use '#textarea' method instead."
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
|
-
end # TextFieldLocator
|
93
|
-
end # Watir
|