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.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -0
  3. data/.travis.yml +7 -3
  4. data/CHANGES.md +6 -0
  5. data/Rakefile +17 -5
  6. data/lib/watir-webdriver.rb +16 -6
  7. data/lib/watir-webdriver/after_hooks.rb +2 -2
  8. data/lib/watir-webdriver/browser.rb +5 -5
  9. data/lib/watir-webdriver/cell_container.rb +4 -10
  10. data/lib/watir-webdriver/element_collection.rb +28 -7
  11. data/lib/watir-webdriver/elements/button.rb +0 -18
  12. data/lib/watir-webdriver/elements/cell.rb +17 -0
  13. data/lib/watir-webdriver/elements/checkbox.rb +0 -3
  14. data/lib/watir-webdriver/elements/element.rb +37 -10
  15. data/lib/watir-webdriver/elements/file_field.rb +0 -3
  16. data/lib/watir-webdriver/elements/hidden.rb +0 -3
  17. data/lib/watir-webdriver/elements/html_elements.rb +0 -219
  18. data/lib/watir-webdriver/elements/iframe.rb +29 -19
  19. data/lib/watir-webdriver/elements/row.rb +17 -0
  20. data/lib/watir-webdriver/elements/svg_elements.rb +0 -120
  21. data/lib/watir-webdriver/elements/table.rb +1 -1
  22. data/lib/watir-webdriver/elements/table_cell.rb +0 -28
  23. data/lib/watir-webdriver/elements/table_row.rb +1 -30
  24. data/lib/watir-webdriver/elements/text_area.rb +0 -17
  25. data/lib/watir-webdriver/elements/text_field.rb +2 -8
  26. data/lib/watir-webdriver/generator/base/visitor.rb +1 -10
  27. data/lib/watir-webdriver/locators.rb +22 -0
  28. data/lib/watir-webdriver/locators/button/locator.rb +38 -0
  29. data/lib/watir-webdriver/locators/button/selector_builder.rb +27 -0
  30. data/lib/watir-webdriver/locators/button/selector_builder/xpath.rb +29 -0
  31. data/lib/watir-webdriver/locators/button/validator.rb +14 -0
  32. data/lib/watir-webdriver/locators/cell/locator.rb +17 -0
  33. data/lib/watir-webdriver/locators/cell/selector_builder.rb +24 -0
  34. data/lib/watir-webdriver/locators/element/locator.rb +249 -0
  35. data/lib/watir-webdriver/locators/element/selector_builder.rb +147 -0
  36. data/lib/watir-webdriver/locators/element/selector_builder/css.rb +65 -0
  37. data/lib/watir-webdriver/locators/element/selector_builder/xpath.rb +72 -0
  38. data/lib/watir-webdriver/locators/element/validator.rb +22 -0
  39. data/lib/watir-webdriver/locators/row/locator.rb +17 -0
  40. data/lib/watir-webdriver/locators/row/selector_builder.rb +29 -0
  41. data/lib/watir-webdriver/locators/text_area/locator.rb +13 -0
  42. data/lib/watir-webdriver/locators/text_area/selector_builder.rb +22 -0
  43. data/lib/watir-webdriver/locators/text_field/locator.rb +42 -0
  44. data/lib/watir-webdriver/locators/text_field/selector_builder.rb +34 -0
  45. data/lib/watir-webdriver/locators/text_field/selector_builder/xpath.rb +19 -0
  46. data/lib/watir-webdriver/locators/text_field/validator.rb +20 -0
  47. data/lib/watir-webdriver/row_container.rb +3 -9
  48. data/lib/watir-webdriver/version.rb +1 -1
  49. data/lib/watir-webdriver/wait.rb +6 -3
  50. data/spec/always_locate_spec.rb +2 -1
  51. data/spec/element_locator_spec.rb +1 -1
  52. data/spec/element_spec.rb +8 -40
  53. data/spec/implementation.rb +52 -45
  54. data/spec/locator_spec_helper.rb +8 -2
  55. data/support/travis.sh +17 -6
  56. metadata +25 -10
  57. data/lib/watir-webdriver/locators/button_locator.rb +0 -85
  58. data/lib/watir-webdriver/locators/child_cell_locator.rb +0 -32
  59. data/lib/watir-webdriver/locators/child_row_locator.rb +0 -37
  60. data/lib/watir-webdriver/locators/element_locator.rb +0 -470
  61. data/lib/watir-webdriver/locators/text_area_locator.rb +0 -24
  62. 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