rwebspec 3.1.4 → 4.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|