watir-webdriver 0.9.1 → 0.9.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/.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
|