rwebspec 3.1.4 → 4.0
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.
- data/CHANGELOG +453 -450
- data/MIT-LICENSE +0 -0
- data/README +0 -0
- data/Rakefile +109 -100
- data/lib/extensions/rspec_extensions.rb +0 -0
- data/lib/extensions/watir_extensions.rb +0 -0
- data/lib/extensions/webdriver_extensions.rb +9 -0
- data/lib/extensions/window_script_extensions.rb +0 -0
- data/lib/plugins/testwise_plugin.rb +16 -0
- data/lib/{rwebspec → rwebspec-common}/assert.rb +394 -386
- data/lib/{rwebspec → rwebspec-common}/clickJSDialog.rb +15 -15
- data/lib/{rwebspec → rwebspec-common}/context.rb +24 -24
- data/lib/{rwebspec → rwebspec-common}/database_checker.rb +0 -0
- data/lib/{rwebspec → rwebspec-common}/load_test_helper.rb +0 -0
- data/lib/{rwebspec → rwebspec-common}/matchers/contains_text.rb +0 -0
- data/lib/{rwebspec → rwebspec-common}/popup.rb +0 -0
- data/lib/{rwebspec → rwebspec-common}/rspec_helper.rb +96 -96
- data/lib/{rwebspec → rwebspec-common}/test_script.rb +0 -0
- data/lib/{rwebspec → rwebspec-common}/test_utils.rb +432 -432
- data/lib/{rwebspec → rwebspec-common}/using_pages.rb +0 -0
- data/lib/{rwebspec → rwebspec-common}/web_page.rb +107 -108
- data/lib/{rwebspec → rwebspec-common}/web_testcase.rb +38 -38
- data/lib/{rwebspec → rwebspec-watir}/driver.rb +759 -772
- data/lib/{rwebspec → rwebspec-watir}/web_browser.rb +611 -611
- data/lib/rwebspec-webdriver/driver.rb +745 -0
- data/lib/rwebspec-webdriver/element_locator.rb +86 -0
- data/lib/rwebspec-webdriver/web_browser.rb +735 -0
- data/lib/rwebspec.rb +99 -59
- metadata +85 -87
@@ -0,0 +1,86 @@
|
|
1
|
+
module RWebSpec
|
2
|
+
module ElementLocator
|
3
|
+
|
4
|
+
BUTTON_VALID_TYPES = %w[button reset submit image]
|
5
|
+
def button_elements
|
6
|
+
find_elements(:xpath, ".//button | .//input[#{attribute_expression :type => BUTTON_VALID_TYPES}]")
|
7
|
+
end
|
8
|
+
|
9
|
+
CHECK_BOX_TYPES = %w(checkbox)
|
10
|
+
def check_box_elements(how, what, opts = [])
|
11
|
+
find_elements(:xpath, ".//input[#{attribute_expression :type => CHECK_BOX_TYPES}]")
|
12
|
+
end
|
13
|
+
|
14
|
+
RADIO_TYPES = %w(radio)
|
15
|
+
def radio_elements(how, what, opts = [])
|
16
|
+
find_elements(:xpath, ".//input[#{attribute_expression :type => RADIO_TYPES}]")
|
17
|
+
end
|
18
|
+
|
19
|
+
def select_elements(how, what, opts = [])
|
20
|
+
find_elements(:xpath, ".//input[#{attribute_expression :type => RADIO_TYPES}]")
|
21
|
+
end
|
22
|
+
|
23
|
+
# TextField, TextArea
|
24
|
+
TEXT_FILED_TYPES = %w(text)
|
25
|
+
def text_field_elements
|
26
|
+
find_elements(:xpath, ".//input[#{attribute_expression :type => TEXT_FILED_TYPES}]")
|
27
|
+
end
|
28
|
+
|
29
|
+
def text_area_elements
|
30
|
+
find_elements(:xpath, ".//textarea")
|
31
|
+
end
|
32
|
+
|
33
|
+
FILE_FIELD_TYPES = %w(file)
|
34
|
+
def file_field_elements
|
35
|
+
find_elements(:xpath, ".//input[#{attribute_expression :type => FILE_FIELD_TYPES}]")
|
36
|
+
end
|
37
|
+
|
38
|
+
HIDDEN_TYPES = %w(hidden)
|
39
|
+
def hidden_elements
|
40
|
+
find_elements(:xpath, ".//input[#{attribute_expression :type => HIDDEN_TYPES}]")
|
41
|
+
end
|
42
|
+
|
43
|
+
#---
|
44
|
+
def find_by_tag(tag)
|
45
|
+
find_elements(:tag_name, tag)
|
46
|
+
end
|
47
|
+
|
48
|
+
def should_use_label_element?
|
49
|
+
@selector[:tag_name] != "option" rescue false
|
50
|
+
end
|
51
|
+
|
52
|
+
def equal_pair(key, value)
|
53
|
+
# we assume :label means a corresponding label element, not the attribute
|
54
|
+
if key == :label && should_use_label_element?
|
55
|
+
"@id=//label[normalize-space()='#{value}']/@for"
|
56
|
+
else
|
57
|
+
"#{lhs_for(key)}='#{value}'"
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def lhs_for(key)
|
62
|
+
case key
|
63
|
+
when :text, 'text'
|
64
|
+
'normalize-space()'
|
65
|
+
when :href
|
66
|
+
# TODO: change this behaviour?
|
67
|
+
'normalize-space(@href)'
|
68
|
+
else
|
69
|
+
"@#{key.to_s.gsub("_", "-")}"
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
|
74
|
+
def attribute_expression(selectors)
|
75
|
+
selectors.map do |key, val|
|
76
|
+
if val.kind_of?(Array)
|
77
|
+
"(" + val.map { |v| equal_pair(key, v) }.join(" or ") + ")"
|
78
|
+
else
|
79
|
+
equal_pair(key, val)
|
80
|
+
end
|
81
|
+
end.join(" and ")
|
82
|
+
end
|
83
|
+
|
84
|
+
end
|
85
|
+
|
86
|
+
end
|