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.
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