druid-ts 1.1.3 → 1.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ChangeLog +27 -0
- data/features/async.feature +6 -0
- data/features/div.feature +1 -0
- data/features/element.feature +4 -0
- data/features/hidden_field.feature +0 -2
- data/features/html/async.html +13 -0
- data/features/html/multi_elements.html +4 -0
- data/features/html/static_elements.html +10 -3
- data/features/link.feature +1 -0
- data/features/multi_elements.feature +135 -25
- data/features/select_list.feature +8 -0
- data/features/span.feature +2 -0
- data/features/step_definations/async_steps.rb +17 -0
- data/features/step_definations/element_steps.rb +6 -0
- data/features/step_definations/multi_elements_steps.rb +96 -0
- data/features/step_definations/select_list_steps.rb +12 -0
- data/features/step_definations/table_steps.rb +20 -3
- data/features/support/ajax_test_environment.rb +1 -1
- data/features/support/page.rb +7 -2
- data/features/table.feature +35 -0
- data/features/text_area.feature +0 -2
- data/features/text_field.feature +1 -2
- data/lib/druid.rb +31 -3
- data/lib/druid/accessors.rb +184 -146
- data/lib/druid/assist.rb +10 -2
- data/lib/druid/element_locators.rb +186 -102
- data/lib/druid/elements/div.rb +1 -1
- data/lib/druid/elements/element.rb +131 -96
- data/lib/druid/elements/hidden_field.rb +1 -5
- data/lib/druid/elements/link.rb +1 -1
- data/lib/druid/elements/select_list.rb +8 -0
- data/lib/druid/elements/span.rb +1 -1
- data/lib/druid/elements/table.rb +14 -3
- data/lib/druid/elements/table_row.rb +17 -2
- data/lib/druid/elements/text_area.rb +0 -8
- data/lib/druid/elements/text_field.rb +1 -1
- data/lib/druid/javascript/yui.rb +19 -0
- data/lib/druid/javascript_framework_facade.rb +3 -1
- data/lib/druid/nested_elements.rb +1 -1
- data/lib/druid/page_factory.rb +25 -0
- data/lib/druid/page_populator.rb +1 -0
- data/lib/druid/version.rb +1 -1
- data/spec/druid/accessors_spec.rb +189 -1
- data/spec/druid/druid_spec.rb +6 -0
- data/spec/druid/element_locators_spec.rb +276 -0
- data/spec/druid/elements/div_spec.rb +1 -1
- data/spec/druid/elements/element_spec.rb +11 -0
- data/spec/druid/elements/hidden_field_spec.rb +0 -5
- data/spec/druid/elements/link_spec.rb +1 -1
- data/spec/druid/elements/span_spec.rb +1 -1
- data/spec/druid/elements/text_area_spec.rb +0 -5
- data/spec/druid/elements/text_field_spec.rb +1 -1
- data/spec/druid/page_factory_spec.rb +20 -0
- data/spec/druid/page_populator_spec.rb +8 -4
- metadata +2 -1
@@ -65,3 +65,11 @@ Feature: Select List
|
|
65
65
|
Scenario: It should know if an option is selected
|
66
66
|
When I select "Test 2" from the select list
|
67
67
|
Then the select list should know that "Test 2" is selected
|
68
|
+
|
69
|
+
Scenario: Clearing multiple select list
|
70
|
+
When I clear multiple select list
|
71
|
+
Then multiple select list should have no selected options
|
72
|
+
|
73
|
+
Scenario: Selecting an option by its value
|
74
|
+
When I select an option using the value "option2"
|
75
|
+
Then the selected option should be "Test 2"
|
data/features/span.feature
CHANGED
@@ -36,6 +36,9 @@ class AsyncPage
|
|
36
36
|
button(:target, :value => 'Target')
|
37
37
|
button(:hide, :value => 'Hide Button')
|
38
38
|
button(:unhide, :value => 'Unhide Button')
|
39
|
+
button(:create_button, :value => "Create Button")
|
40
|
+
button(:remove_button, :value => "Remove Button")
|
41
|
+
button(:created_button, :value => "New Button")
|
39
42
|
end
|
40
43
|
|
41
44
|
Given(/^I am on the async elements page$/) do
|
@@ -61,3 +64,17 @@ Then(/^I should be able to wait until the button becomes invisible$/) do
|
|
61
64
|
expect(@page.target_element.attribute("block")).to eql "none"
|
62
65
|
end
|
63
66
|
end
|
67
|
+
|
68
|
+
When(/^I add a button a few seconds from now$/) do
|
69
|
+
@page.create_button
|
70
|
+
end
|
71
|
+
|
72
|
+
When(/^I remove a button a few seconds from now$/) do
|
73
|
+
@page.created_button_element.when_present
|
74
|
+
@page.remove_button
|
75
|
+
end
|
76
|
+
|
77
|
+
Then(/^I should not be able to find the button$/) do
|
78
|
+
@page.created_button_element.when_not_present
|
79
|
+
expect(@page.created_button_element.exist?).to be false
|
80
|
+
end
|
@@ -306,3 +306,99 @@ end
|
|
306
306
|
Then(/^the text for label (\d+) should be "([^"]*)"$/) do |label_num, text|
|
307
307
|
expect(@elements[label_num.to_i - 1].text).to eql text
|
308
308
|
end
|
309
|
+
|
310
|
+
When(/^I select all buttons using no identifier$/) do
|
311
|
+
@elements = @page.button_elements
|
312
|
+
end
|
313
|
+
|
314
|
+
When(/^I select all text fields using no identifier$/) do
|
315
|
+
@elements = @page.text_field_elements
|
316
|
+
end
|
317
|
+
|
318
|
+
When(/^I select all hidden fields using no identifier$/) do
|
319
|
+
@elements = @page.hidden_field_elements
|
320
|
+
end
|
321
|
+
|
322
|
+
When(/^I select all text areas using no identifier$/) do
|
323
|
+
@elements = @page.text_area_elements
|
324
|
+
end
|
325
|
+
|
326
|
+
When(/^I select all select lists using no identifier$/) do
|
327
|
+
@elements = @page.select_list_elements
|
328
|
+
end
|
329
|
+
|
330
|
+
When(/^I select all links using no identifier$/) do
|
331
|
+
@elements = @page.link_elements
|
332
|
+
end
|
333
|
+
|
334
|
+
When(/^I select all checkboxes using no identifier$/) do
|
335
|
+
@elements = @page.checkboxes_elements
|
336
|
+
end
|
337
|
+
|
338
|
+
When(/^I select all radio buttons using no identifier$/) do
|
339
|
+
@elements = @page.radio_button_elements
|
340
|
+
end
|
341
|
+
|
342
|
+
When(/^I select all divs using no identifier$/) do
|
343
|
+
@elements = @page.div_elements
|
344
|
+
end
|
345
|
+
|
346
|
+
When(/^I select all spans using no identifier$/) do
|
347
|
+
@elements = @page.span_elements
|
348
|
+
end
|
349
|
+
|
350
|
+
When(/^I select all tables using no identifier$/) do
|
351
|
+
@elements = @page.table_elements
|
352
|
+
end
|
353
|
+
|
354
|
+
When(/^I select all cells using no identifier$/) do
|
355
|
+
@elements = @page.cell_elements
|
356
|
+
end
|
357
|
+
|
358
|
+
When(/^I select the images using no identifier$/) do
|
359
|
+
@elements = @page.image_elements
|
360
|
+
end
|
361
|
+
|
362
|
+
When(/^I select the forms using no identifier$/) do
|
363
|
+
@elements = @page.form_elements
|
364
|
+
end
|
365
|
+
|
366
|
+
When(/^I select all list items using no identifier$/) do
|
367
|
+
@elements = @page.list_item_elements
|
368
|
+
end
|
369
|
+
|
370
|
+
When(/^I select all unordered lists using no identifier$/) do
|
371
|
+
@elements = @page.unordered_list_elements
|
372
|
+
end
|
373
|
+
|
374
|
+
When(/^I select all ordered lists using no identifier$/) do
|
375
|
+
@elements = @page.ordered_list_elements
|
376
|
+
end
|
377
|
+
|
378
|
+
When /^I select all h(\d+)s using no identifier$/ do |num|
|
379
|
+
@elements = @page.send "h#{num}_elements"
|
380
|
+
end
|
381
|
+
|
382
|
+
When(/^I select all paragraphs using no identifier$/) do
|
383
|
+
@elements = @page.paragraph_elements
|
384
|
+
end
|
385
|
+
|
386
|
+
When(/^I select all labels using no identifier$/) do
|
387
|
+
@elements = @page.label_elements
|
388
|
+
end
|
389
|
+
|
390
|
+
When(/^I select the file fields with class "([^"]*)"$/) do |class_name|
|
391
|
+
@elements = @page.file_field_elements(:class => class_name)
|
392
|
+
end
|
393
|
+
|
394
|
+
Then(/^I should have (\d+) file fields$/) do |num_file_fields|
|
395
|
+
expect(@elements.size).to eql num_file_fields.to_i
|
396
|
+
end
|
397
|
+
|
398
|
+
Then(/^the title for file field (\d+) should be "([^"]*)"$/) do |file_field_num, title|
|
399
|
+
expect(@elements[file_field_num.to_i - 1].attribute('title')).to eql title
|
400
|
+
end
|
401
|
+
|
402
|
+
When(/^I select all file fields using no identifier$/) do
|
403
|
+
@elements = @page.file_field_elements
|
404
|
+
end
|
@@ -69,3 +69,15 @@ Then(/^the value for the option should be "([^"]*)"$/) do |value|
|
|
69
69
|
@element = @page.send "select_list_#{@how}_element".to_sym
|
70
70
|
expect(@element.value).to eql value
|
71
71
|
end
|
72
|
+
|
73
|
+
When(/^I clear multiple select list$/) do
|
74
|
+
@page.select_list_multiple_element.clear
|
75
|
+
end
|
76
|
+
|
77
|
+
Then(/^multiple select list should have no selected options$/) do
|
78
|
+
expect(@page.select_list_multiple_element.selected_options).to be_empty
|
79
|
+
end
|
80
|
+
|
81
|
+
When(/^I select an option using the value "([^"]*)"$/) do |value|
|
82
|
+
@page.select_list_id_element.select_value(value)
|
83
|
+
end
|
@@ -7,9 +7,10 @@ When(/^I retrieve a table element by "(.*?)"$/) do |how|
|
|
7
7
|
end
|
8
8
|
|
9
9
|
Then(/^the data for row "(.*?)" should be "(.*?)" and "(.*?)"$/) do |row, col1, col2|
|
10
|
-
row =
|
11
|
-
|
12
|
-
expect(
|
10
|
+
row = (row.to_i - 1) if row.to_i > 0
|
11
|
+
table_row = @element[row]
|
12
|
+
expect(table_row[0].text).to eql col1
|
13
|
+
expect(table_row[1].text).to eql col2
|
13
14
|
end
|
14
15
|
|
15
16
|
Then(/^the table should have "(.*?)" rows$/) do |number|
|
@@ -54,3 +55,19 @@ end
|
|
54
55
|
Then(/^I should see that the table exists$/) do
|
55
56
|
expect(@page.table_id?).to be true
|
56
57
|
end
|
58
|
+
|
59
|
+
Then(/^the data for column "([^"]*)" and row "([^"]*)" should be "([^"]*)"$/) do |column, row, value|
|
60
|
+
expect(@element[row.to_i - 1][column].text).to eql value
|
61
|
+
end
|
62
|
+
|
63
|
+
Then(/^the data for row "([^"]*)" and column "([^"]*)" should be "([^"]*)"$/) do |row, column, value|
|
64
|
+
expect(@element[row][column].text).to eql value
|
65
|
+
end
|
66
|
+
|
67
|
+
Then(/^the data for row "([^"]*)" should be nil$/) do |row|
|
68
|
+
expect(@element[row]).to be_nil
|
69
|
+
end
|
70
|
+
|
71
|
+
Then(/^the data for row "([^"]*)" and column "([^"]*)" should be nil$/) do |row, column|
|
72
|
+
expect(@element[row][column]).to be_nil
|
73
|
+
end
|
data/features/support/page.rb
CHANGED
@@ -16,6 +16,7 @@ class Page
|
|
16
16
|
link(:google_search_link, :link => "Google Search")
|
17
17
|
link(:google_search_link_text, :link_text => "Google Search")
|
18
18
|
link(:google_search_css, :css => "a.link_class")
|
19
|
+
link(:google_search_title, :title => "link_title")
|
19
20
|
link(:hello0, {:text => "Hello", :index => 0})
|
20
21
|
link(:hello1, {:text => "Hello", :index => 1})
|
21
22
|
link(:hello2, {:text => "Hello", :index => 2})
|
@@ -30,6 +31,7 @@ class Page
|
|
30
31
|
text_field(:text_field_text, :text => "")
|
31
32
|
text_field(:text_field_value, :value => "")
|
32
33
|
text_field(:text_field_title, :title => "text_field_title")
|
34
|
+
text_field(:text_field_label, :label => "Text Field")
|
33
35
|
text_field(:text_field_class_index, :class => "text_field_class", :index => 0)
|
34
36
|
text_field(:text_field_name_index, :name => "text_field_name", :index => 0)
|
35
37
|
|
@@ -49,6 +51,7 @@ class Page
|
|
49
51
|
select_list(:select_list_xpath, :xpath => "//select")
|
50
52
|
select_list(:select_list_text, :text => "Test 1")
|
51
53
|
select_list(:select_list_value, :value => "option1")
|
54
|
+
select_list(:select_list_multiple, :id => "sel_list_multiple")
|
52
55
|
select_list(:select_list_class_index, :class => "sel_list_class", :index => 0)
|
53
56
|
select_list(:select_list_name_index, :name => "sel_list_name", :index => 0)
|
54
57
|
|
@@ -94,6 +97,7 @@ class Page
|
|
94
97
|
div(:div_index, :index => 0)
|
95
98
|
div(:div_xpath, :xpath => '//div')
|
96
99
|
div(:div_text, :text => "page-object rocks!")
|
100
|
+
div(:div_title, :title => "div_title")
|
97
101
|
div(:div_class_index, :class => "div_class", :index => 0)
|
98
102
|
div(:div_name_index, :name => "div_name", :index => 0)
|
99
103
|
|
@@ -120,6 +124,7 @@ class Page
|
|
120
124
|
span(:span_xpath, :xpath => '//span')
|
121
125
|
span(:span_name, :name => 'span_name')
|
122
126
|
span(:span_text, :text => 'My alert')
|
127
|
+
span(:span_title, :title => 'span_title')
|
123
128
|
span(:span_class_index, :class => "span_class", :index => 0)
|
124
129
|
span(:span_name_index, :name => "span_name", :index => 0)
|
125
130
|
|
@@ -127,8 +132,8 @@ class Page
|
|
127
132
|
label(:label_name, :name => "label_name")
|
128
133
|
label(:label_class, :class => "label_class")
|
129
134
|
label(:label_text, :text => "page-object is the best!")
|
130
|
-
label(:label_index, :index =>
|
131
|
-
label(:label_xpath, :xpath => "//label")
|
135
|
+
label(:label_index, :index => 1)
|
136
|
+
label(:label_xpath, :xpath => "//label[2]")
|
132
137
|
label(:label_class_index, :class => "label_class", :index => 0)
|
133
138
|
label(:label_name_index, :name => "label_name", :index => 0)
|
134
139
|
|
data/features/table.feature
CHANGED
@@ -10,6 +10,41 @@ Feature: Table
|
|
10
10
|
Then I should know it is visible
|
11
11
|
Then I should know it exists
|
12
12
|
|
13
|
+
Scenario: Retrieve data from a table using a row header
|
14
|
+
When I retrieve a table element
|
15
|
+
Then the data for row "Data3" should be "Data3" and "Data4"
|
16
|
+
|
17
|
+
Scenario: Retrieve data from a table using a partial row header
|
18
|
+
When I retrieve a table element
|
19
|
+
Then the data for row "ata3" should be "Data3" and "Data4"
|
20
|
+
|
21
|
+
Scenario: Retrieve data from a table using a row header in the 2nd column
|
22
|
+
When I retrieve a table element
|
23
|
+
Then the data for row "Data4" should be "Data3" and "Data4"
|
24
|
+
|
25
|
+
Scenario: Retrieve data from a table using a partial row header in the 2nd column
|
26
|
+
When I retrieve a table element
|
27
|
+
Then the data for row "ata4" should be "Data3" and "Data4"
|
28
|
+
|
29
|
+
Scenario: Retrieve data from a table using a column header
|
30
|
+
When I retrieve a table element
|
31
|
+
Then the data for column "Data2" and row "2" should be "Data4"
|
32
|
+
|
33
|
+
Scenario: Retrieve data from a table using a partial column header
|
34
|
+
When I retrieve a table element
|
35
|
+
Then the data for column "ata2" and row "2" should be "Data4"
|
36
|
+
|
37
|
+
Scenario: Retrieve data from a table using both headers
|
38
|
+
When I retrieve a table element
|
39
|
+
Then the data for row "Data3" and column "Data2" should be "Data4"
|
40
|
+
|
41
|
+
Scenario: Retrieve data from a table with an incorrect row header
|
42
|
+
When I retrieve a table element
|
43
|
+
Then the data for row "Data20" should be nil
|
44
|
+
|
45
|
+
Scenario: Retrieve data from a table with an incorrect column header
|
46
|
+
When I retrieve a table element
|
47
|
+
Then the data for row "Data3" and column "Data20" should be nil
|
13
48
|
@name
|
14
49
|
Scenario Outline: Locating table cells on the Page
|
15
50
|
When I retrieve a table element by "<locate_by>"
|
data/features/text_area.feature
CHANGED
data/features/text_field.feature
CHANGED
data/lib/druid.rb
CHANGED
@@ -52,8 +52,8 @@ module Druid
|
|
52
52
|
def initialize(driver, visit=false)
|
53
53
|
if driver.is_a? Watir::Browser
|
54
54
|
@driver ||= driver
|
55
|
-
initialize_page if respond_to?(:initialize_page)
|
56
55
|
goto if visit && respond_to?(:goto)
|
56
|
+
initialize_page if respond_to?(:initialize_page)
|
57
57
|
else
|
58
58
|
raise ArgumentError, "expect Watir::Browser"
|
59
59
|
end
|
@@ -73,6 +73,34 @@ module Druid
|
|
73
73
|
driver.goto url
|
74
74
|
end
|
75
75
|
|
76
|
+
#
|
77
|
+
# Set the default timeout for page level Waits
|
78
|
+
#
|
79
|
+
def self.default_page_wait=(timeout)
|
80
|
+
@page_wait = timeout
|
81
|
+
end
|
82
|
+
|
83
|
+
#
|
84
|
+
# Return the default timeout for page level Waits
|
85
|
+
#
|
86
|
+
def self.default_page_wait
|
87
|
+
@page_wait ||= 30
|
88
|
+
end
|
89
|
+
|
90
|
+
#
|
91
|
+
# Sets the default timeout for element level Waits
|
92
|
+
#
|
93
|
+
def self.default_element_wait=(timeout)
|
94
|
+
@element_wait = timeout
|
95
|
+
end
|
96
|
+
|
97
|
+
#
|
98
|
+
# Returns the default timeout for element level Waits
|
99
|
+
#
|
100
|
+
def self.default_element_wait
|
101
|
+
@element_wait ||= 5
|
102
|
+
end
|
103
|
+
|
76
104
|
#
|
77
105
|
# Set the javascript framework to use when determining number of
|
78
106
|
# ajax requests. Valid frameworks are :jquery, :prototype, and :Dojo
|
@@ -154,7 +182,7 @@ module Druid
|
|
154
182
|
# @param [String] the message to include with the error if we exceed the timeout duration
|
155
183
|
# @param block the block to execute. It should return true when successful.
|
156
184
|
#
|
157
|
-
def wait_until(timeout =
|
185
|
+
def wait_until(timeout = Druid.default_page_wait, message = nil, &block)
|
158
186
|
driver.wait_until(timeout, message, &block)
|
159
187
|
end
|
160
188
|
|
@@ -164,7 +192,7 @@ module Druid
|
|
164
192
|
# @param [Numeric] the amount of time to wait for the block to return true.
|
165
193
|
# @param [String] the message to include with the error if we exceed the timeout duration
|
166
194
|
#
|
167
|
-
def wait_for_ajax(timeout =
|
195
|
+
def wait_for_ajax(timeout = Druid.default_page_wait, message = nil)
|
168
196
|
end_time = ::Time.now + timeout
|
169
197
|
until ::Time.now > end_time
|
170
198
|
return if driver.execute_script(Druid::JavascriptFrameworkFacade.pending_requests) == 0
|
data/lib/druid/accessors.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
require 'druid/elements'
|
2
|
-
|
3
|
-
# Contains the class level methods that are inserted into your page class
|
4
|
-
# when you include the PageObject module. These methods will generate another
|
5
|
-
# set of methods that provide access to the elements on the web pages.
|
6
|
-
#
|
2
|
+
|
7
3
|
module Druid
|
4
|
+
#
|
5
|
+
# Contains the class level methods that are inserted into your page class
|
6
|
+
# when you include the PageObject module. These methods will generate another
|
7
|
+
# set of methods that provide access to the elements on the web pages.
|
8
|
+
#
|
8
9
|
module Accessors
|
9
10
|
#
|
10
11
|
# Specify the url for the page. A call to this method will generate a
|
@@ -34,7 +35,7 @@ module Druid
|
|
34
35
|
#
|
35
36
|
def expected_title(expected_title)
|
36
37
|
define_method("has_expected_title?") do
|
37
|
-
has_expected_title = expected_title
|
38
|
+
has_expected_title = expected_title === title
|
38
39
|
raise "Expected title '#{expected_title}' instead of '#{title}'" unless has_expected_title
|
39
40
|
has_expected_title
|
40
41
|
end
|
@@ -58,7 +59,9 @@ module Druid
|
|
58
59
|
end
|
59
60
|
|
60
61
|
#
|
61
|
-
# Identify an element as existing within a frame or iframe.
|
62
|
+
# Identify an element as existing within a frame or iframe. A frame parameter
|
63
|
+
# is passed to the block and must be passed to the other calls to Druid.
|
64
|
+
# You can nest calls to in_frame by passing the frame to the next level.
|
62
65
|
#
|
63
66
|
# @example
|
64
67
|
# in_frame(:id => 'frame_id') do |frame|
|
@@ -69,6 +72,7 @@ module Druid
|
|
69
72
|
# * :id
|
70
73
|
# * :index
|
71
74
|
# * :name
|
75
|
+
# @param frame passed from a previous call to in_frame. Used to nest calls
|
72
76
|
# @param block that contains the calls to elements that exist inside the frame.
|
73
77
|
#
|
74
78
|
def in_frame(identifier, frame=nil, &block)
|
@@ -77,7 +81,9 @@ module Druid
|
|
77
81
|
block.call(frame)
|
78
82
|
end
|
79
83
|
#
|
80
|
-
# Identify an element as existing within a frame or iframe.
|
84
|
+
# Identify an element as existing within a frame or iframe. A frame parameter
|
85
|
+
# is passed to the block and must be passed to the other calls to Druid.
|
86
|
+
# You can nest calls to in_iframe by passing the frame to the next level.
|
81
87
|
#
|
82
88
|
# @example
|
83
89
|
# in_iframe(:id => 'frame_id') do |frame|
|
@@ -88,6 +94,7 @@ module Druid
|
|
88
94
|
# * :id
|
89
95
|
# * :index
|
90
96
|
# * :name
|
97
|
+
# @param frame passed from a previous call to in_iframe. Used to nest calls
|
91
98
|
# @param block that contains the calls to elements that exist inside the frame.
|
92
99
|
#
|
93
100
|
def in_iframe(identifier, frame=nil, &block)
|
@@ -105,20 +112,23 @@ module Druid
|
|
105
112
|
# link(:add_to_cart, :text => "Add to Cart")
|
106
113
|
# # will generate 'add_to_cart', 'add_to_cart_element', and 'add_to_cart?' methods
|
107
114
|
#
|
108
|
-
# @param the name used for the generated methods
|
109
|
-
# @param identifier how we find a link.
|
110
|
-
# :
|
111
|
-
# :
|
112
|
-
# :
|
113
|
-
# :
|
114
|
-
# :
|
115
|
-
# :
|
116
|
-
# :
|
117
|
-
# :
|
118
|
-
# :
|
119
|
-
# :
|
115
|
+
# @param [Symbol] the name used for the generated methods
|
116
|
+
# @param [Hash] identifier how we find a link. You can use a multiple parameters
|
117
|
+
# by combining of any of the following except xpath. The valid values are:
|
118
|
+
# * :class
|
119
|
+
# * :href
|
120
|
+
# * :id
|
121
|
+
# * :index
|
122
|
+
# * :name
|
123
|
+
# * :text
|
124
|
+
# * :xpath
|
125
|
+
# * :link
|
126
|
+
# * :link_text
|
127
|
+
# * :css
|
128
|
+
# * :title
|
129
|
+
# @param optional block to be invoked when element method is called
|
120
130
|
#
|
121
|
-
def link(name, identifier=
|
131
|
+
def link(name, identifier={:index => 0}, &block)
|
122
132
|
define_method(name) do
|
123
133
|
return click_link_for identifier.clone unless block_given?
|
124
134
|
self.send("#{name}_element").click
|
@@ -136,7 +146,7 @@ module Druid
|
|
136
146
|
end
|
137
147
|
|
138
148
|
#
|
139
|
-
# adds four methods to the page
|
149
|
+
# adds four methods to the page objec - one to set text in a text field,
|
140
150
|
# another to retrieve text from a text field, another to return the text
|
141
151
|
# field element, another to check the text field's existence.
|
142
152
|
#
|
@@ -145,18 +155,20 @@ module Druid
|
|
145
155
|
# # will generate 'first_name', 'first_name=', 'first_name_element',
|
146
156
|
# # 'first_name?' methods
|
147
157
|
#
|
148
|
-
# @param
|
149
|
-
# @param identifier how we find a text_field.
|
150
|
-
# :
|
151
|
-
# :
|
152
|
-
# :id
|
153
|
-
# :index
|
154
|
-
# :name
|
155
|
-
# :
|
156
|
-
# :
|
157
|
-
# :
|
158
|
-
# :
|
159
|
-
|
158
|
+
# @param [Symbol] the name used for the generated methods
|
159
|
+
# @param [Hash] identifier how we find a text_field. You can use a multiple parameters
|
160
|
+
# by combining of any of the following except xpath. The valid values are:
|
161
|
+
# * :class
|
162
|
+
# * :id
|
163
|
+
# * :index
|
164
|
+
# * :name
|
165
|
+
# * :xpath
|
166
|
+
# * :text
|
167
|
+
# * :title
|
168
|
+
# * :label
|
169
|
+
# @param optional block to be invoked when element method is called
|
170
|
+
#
|
171
|
+
def text_field(name, identifier={:index => 0}, &block)
|
160
172
|
define_method(name) do
|
161
173
|
return text_field_value_for identifier.clone unless block_given?
|
162
174
|
self.send("#{name}_element").value
|
@@ -188,16 +200,18 @@ module Druid
|
|
188
200
|
# # will generate 'check_active', 'uncheck_active', 'active_checked?',
|
189
201
|
# # 'active_element', and 'active?' methods
|
190
202
|
#
|
191
|
-
# @param the name used for the generated methods
|
192
|
-
# @param identifier how we find a checkbox.
|
193
|
-
# :
|
194
|
-
# :
|
195
|
-
# :
|
196
|
-
# :
|
197
|
-
# :
|
198
|
-
# :
|
203
|
+
# @param [Symbol] the name used for the generated methods
|
204
|
+
# @param [Hash] identifier how we find a checkbox. You can use a multiple parameters
|
205
|
+
# by combining of any of the following except xpath. The valid values are:
|
206
|
+
# * :class
|
207
|
+
# * :id
|
208
|
+
# * :index
|
209
|
+
# * :name
|
210
|
+
# * :xpath
|
211
|
+
# * :value
|
212
|
+
# @param optional block to be invoked when element method is called
|
199
213
|
#
|
200
|
-
def checkbox(name, identifier=
|
214
|
+
def checkbox(name, identifier={:index => 0}, &block)
|
201
215
|
define_method("check_#{name}") do
|
202
216
|
return check_checkbox identifier.clone unless block_given?
|
203
217
|
self.send("#{name}_element").check
|
@@ -232,15 +246,17 @@ module Druid
|
|
232
246
|
# select_list(:state, :id => "state")
|
233
247
|
# # will generate 'state', 'state=', 'state_element', 'state?' methods
|
234
248
|
#
|
235
|
-
# @param the name used for the generated methods
|
236
|
-
# @param identifier how we find a select_list.
|
249
|
+
# @param [Symbol] the name used for the generated methods
|
250
|
+
# @param [Hash] identifier how we find a select_list. You can use a multiple parameters
|
251
|
+
# by combining of any of the following except xpath. The valid values are:
|
237
252
|
# :class
|
238
253
|
# :id
|
239
254
|
# :index
|
240
255
|
# :name
|
241
256
|
# :xpath
|
257
|
+
# @param optional block to be invoked when element method is called
|
242
258
|
#
|
243
|
-
def select_list(name, identifier=
|
259
|
+
def select_list(name, identifier={:index => 0}, &block)
|
244
260
|
define_method(name) do
|
245
261
|
return select_list_value_for identifier.clone unless block_given?
|
246
262
|
self.send("#{name}_element").options.each {|o| return o.text if o.selected?}
|
@@ -273,16 +289,18 @@ module Druid
|
|
273
289
|
# # will generate 'select_north', 'clear_north', 'north_selected?',
|
274
290
|
# # 'north_element', and 'north?' methods
|
275
291
|
#
|
276
|
-
# @param the name used for the generated methods
|
277
|
-
# @param identifier how we find a radio_button.
|
278
|
-
# :
|
279
|
-
# :
|
280
|
-
# :
|
281
|
-
# :
|
282
|
-
# :
|
283
|
-
# :
|
292
|
+
# @param [Symbol] the name used for the generated methods
|
293
|
+
# @param [Hash] identifier how we find a radio_button. You can use a multiple parameters
|
294
|
+
# by combining of any of the following except xpath. The valid values are:
|
295
|
+
# * :class
|
296
|
+
# * :id
|
297
|
+
# * :index
|
298
|
+
# * :name
|
299
|
+
# * :xpath
|
300
|
+
# * :value
|
301
|
+
# @param optional block to be invoked when element method is called
|
284
302
|
#
|
285
|
-
def radio_button(name, identifier=
|
303
|
+
def radio_button(name, identifier={:index => 0}, &block)
|
286
304
|
define_method("select_#{name}") do
|
287
305
|
return select_radio identifier.clone unless block_given?
|
288
306
|
self.send("#{name}_element").select
|
@@ -315,8 +333,9 @@ module Druid
|
|
315
333
|
# button(:purchase, :id => 'purchase')
|
316
334
|
# # will generate 'purchase', 'purchase_element', and 'purchase?' methods
|
317
335
|
#
|
318
|
-
# @param the name used for the generated methods
|
319
|
-
# @param identifier how we find a button.
|
336
|
+
# @param [Symbol] the name used for the generated methods
|
337
|
+
# @param [Hash] identifier how we find a button. You can use a multiple parameters
|
338
|
+
# by combining of any of the following except xpath. The valid values are:
|
320
339
|
# :class
|
321
340
|
# :id
|
322
341
|
# :index
|
@@ -326,8 +345,9 @@ module Druid
|
|
326
345
|
# :src
|
327
346
|
# :alt
|
328
347
|
# :css
|
348
|
+
# @param optional block to be invoked when element method is called
|
329
349
|
#
|
330
|
-
def button(name, identifier=
|
350
|
+
def button(name, identifier={:index => 0}, &block)
|
331
351
|
define_method(name) do
|
332
352
|
return click_button_for identifier.clone unless block_given?
|
333
353
|
self.send("#{name}_element").click
|
@@ -352,17 +372,20 @@ module Druid
|
|
352
372
|
# div(:message, :id => 'message')
|
353
373
|
# # will generate 'message', 'message_element', and 'message?' methods
|
354
374
|
#
|
355
|
-
# @param the name used for the generated methods
|
356
|
-
# @param identifier how we find a div.
|
357
|
-
# :
|
358
|
-
# :
|
359
|
-
# :
|
360
|
-
# :
|
361
|
-
# :
|
362
|
-
# :
|
363
|
-
# :
|
375
|
+
# @param [Symbol] the name used for the generated methods
|
376
|
+
# @param [Hash] identifier how we find a div. You can use a multiple parameters
|
377
|
+
# by combining of any of the following except xpath. The valid values are:
|
378
|
+
# * :class
|
379
|
+
# * :id
|
380
|
+
# * :index
|
381
|
+
# * :xpath
|
382
|
+
# * :name
|
383
|
+
# * :text
|
384
|
+
# * :value
|
385
|
+
# * :title
|
386
|
+
# @param optional block to be invoked when element method is called
|
364
387
|
#
|
365
|
-
def div(name, identifier=
|
388
|
+
def div(name, identifier={:index => 0}, &block)
|
366
389
|
define_method(name) do
|
367
390
|
return div_text_for identifier.clone unless block_given?
|
368
391
|
self.send("#{name}_element").text
|
@@ -388,14 +411,16 @@ module Druid
|
|
388
411
|
# # will generate a 'cart_element' and 'cart?' method
|
389
412
|
#
|
390
413
|
# @param the name used for the generated methods
|
391
|
-
# @param identifier how we find a table.
|
392
|
-
# :
|
393
|
-
# :
|
394
|
-
# :
|
395
|
-
# :
|
396
|
-
# :
|
414
|
+
# @param identifier how we find a table. You can use a multiple parameters
|
415
|
+
# by combining of any of the following except xpath. The valid values are:
|
416
|
+
# * :class
|
417
|
+
# * :id
|
418
|
+
# * :index
|
419
|
+
# * :xpath
|
420
|
+
# * :name
|
421
|
+
# @param optional block to be invoked when element method is called
|
397
422
|
#
|
398
|
-
def table(name, identifier=
|
423
|
+
def table(name, identifier={:index => 0}, &block)
|
399
424
|
define_method("#{name}_element") do
|
400
425
|
return call_block(&block) if block_given?
|
401
426
|
table_for(identifier.clone)
|
@@ -417,16 +442,18 @@ module Druid
|
|
417
442
|
# cell(:total, :id => 'total_cell')
|
418
443
|
# # will generate 'total', 'total_element', and 'total?' methods
|
419
444
|
#
|
420
|
-
# @param the name used for the generated methods
|
421
|
-
# @param identifier how we find a cell.
|
422
|
-
# :
|
423
|
-
# :
|
424
|
-
# :
|
425
|
-
# :
|
426
|
-
# :
|
427
|
-
# :
|
445
|
+
# @param [Symbol] the name used for the generated methods
|
446
|
+
# @param [Hash] identifier how we find a cell. You can use a multiple parameters
|
447
|
+
# by combining of any of the following except xpath. The valid values are:
|
448
|
+
# * :class
|
449
|
+
# * :id
|
450
|
+
# * :index
|
451
|
+
# * :xpath
|
452
|
+
# * :name
|
453
|
+
# * :text
|
454
|
+
# @param optional block to be invoked when element method is called
|
428
455
|
#
|
429
|
-
def cell(name, identifier=
|
456
|
+
def cell(name, identifier={:index => 0}, &block)
|
430
457
|
define_method(name) do
|
431
458
|
return cell_text_for identifier.clone unless block_given?
|
432
459
|
self.send("#{name}_element").text
|
@@ -451,16 +478,18 @@ module Druid
|
|
451
478
|
# span(:alert, :id => 'alert')
|
452
479
|
# # will generate 'alert', 'alert_element', and 'alert?' methods
|
453
480
|
#
|
454
|
-
# @param the name used for the generated methods
|
455
|
-
# @param identifier how we find a span.
|
456
|
-
# :
|
457
|
-
# :
|
458
|
-
# :
|
459
|
-
# :
|
460
|
-
# :
|
461
|
-
# :
|
481
|
+
# @param [Symbol] the name used for the generated methods
|
482
|
+
# @param [Hash] identifier how we find a span. You can use a multiple parameters
|
483
|
+
# by combining of any of the following except xpath. The valid values are:
|
484
|
+
# * :class
|
485
|
+
# * :id
|
486
|
+
# * :index
|
487
|
+
# * :xpath
|
488
|
+
# * :name
|
489
|
+
# * :text
|
490
|
+
# @param optional block to be invoked when element method is called
|
462
491
|
#
|
463
|
-
def span(name, identifier=
|
492
|
+
def span(name, identifier={:index => 0}, &block)
|
464
493
|
define_method(name) do
|
465
494
|
return span_text_for identifier.clone unless block_given?
|
466
495
|
self.send("#{name}_element").text
|
@@ -485,17 +514,19 @@ module Druid
|
|
485
514
|
# image(:logo, :id => 'logo')
|
486
515
|
# # will generate 'logo_element' and 'logo?' methods
|
487
516
|
#
|
488
|
-
# @param the name used for the generated methods
|
489
|
-
# @param identifier how we find a image.
|
490
|
-
# :
|
491
|
-
# :
|
492
|
-
# :
|
493
|
-
# :
|
494
|
-
# :
|
495
|
-
# :
|
496
|
-
# :
|
517
|
+
# @param [Symbol] the name used for the generated methods
|
518
|
+
# @param [Hash] identifier how we find a image. You can use a multiple parameters
|
519
|
+
# by combining of any of the following except xpath. The valid values are:
|
520
|
+
# * :class
|
521
|
+
# * :id
|
522
|
+
# * :index
|
523
|
+
# * :name
|
524
|
+
# * :xpath
|
525
|
+
# * :alt
|
526
|
+
# * :src
|
527
|
+
# @param optional block to be invoked when element method is called
|
497
528
|
#
|
498
|
-
def image(name, identifier=
|
529
|
+
def image(name, identifier={:index => 0}, &block)
|
499
530
|
define_method("#{name}_element") do
|
500
531
|
return call_block(&block) if block_given?
|
501
532
|
image_for(identifier.clone)
|
@@ -516,16 +547,18 @@ module Druid
|
|
516
547
|
# form(:login, :id => 'login')
|
517
548
|
# # will generate 'login_element' and 'login?' methods
|
518
549
|
#
|
519
|
-
# @param [
|
520
|
-
# @param [Hash] identifier how we find a form.
|
550
|
+
# @param [Symbol] the name used for the generated methods
|
551
|
+
# @param [Hash] identifier how we find a form. You can use a multiple parameters
|
552
|
+
# by combining of any of the following except xpath. The valid keys are:
|
521
553
|
# * :class
|
522
554
|
# * :id
|
523
555
|
# * :index
|
524
556
|
# * :xpath
|
525
557
|
# * :name
|
526
558
|
# * :action
|
559
|
+
# @param optional block to be invoked when element method is called
|
527
560
|
#
|
528
|
-
def form(name, identifier=
|
561
|
+
def form(name, identifier={:index => 0}, &block)
|
529
562
|
define_method("#{name}_element") do
|
530
563
|
return call_block(&block) if block_given?
|
531
564
|
form_for(identifier.clone)
|
@@ -547,19 +580,19 @@ module Druid
|
|
547
580
|
# hidden_field(:user_id, :id => "user_identity")
|
548
581
|
# # will generate 'user_id', 'user_id_element' and 'user_id?' methods
|
549
582
|
#
|
550
|
-
# @param [
|
551
|
-
# @param [Hash] identifier how we find a hidden field.
|
583
|
+
# @param [Symbol] the name used for the generated methods
|
584
|
+
# @param [Hash] identifier how we find a hidden field. You can use a multiple parameters
|
585
|
+
# by combining of any of the following except xpath. The valid keys are:
|
552
586
|
# * :class
|
553
|
-
# * :css
|
554
587
|
# * :id
|
555
588
|
# * :index
|
556
589
|
# * :name
|
557
|
-
# * :tag_name
|
558
590
|
# * :text
|
559
591
|
# * :xpath
|
560
592
|
# * :value
|
593
|
+
# @param optional block to be invoked when element method is called
|
561
594
|
#
|
562
|
-
def hidden_field(name, identifier=
|
595
|
+
def hidden_field(name, identifier={:index => 0}, &block)
|
563
596
|
define_method("#{name}_element") do
|
564
597
|
return call_block(&block) if block_given?
|
565
598
|
hidden_field_for(identifier.clone)
|
@@ -585,15 +618,17 @@ module Druid
|
|
585
618
|
# list_item(:item_one, :id => 'one')
|
586
619
|
# # will generate 'item_one', 'item_one_element', and 'item_one?' methods
|
587
620
|
#
|
588
|
-
# @param [
|
589
|
-
# @param [Hash] identifier how we find a list item.
|
621
|
+
# @param [Symbol] the name used for the generated methods
|
622
|
+
# @param [Hash] identifier how we find a list item. You can use a multiple parameters
|
623
|
+
# by combining of any of the following except xpath. The valid keys are:
|
590
624
|
# * :class
|
591
625
|
# * :id
|
592
626
|
# * :index
|
593
627
|
# * :xpath
|
594
628
|
# * :name
|
629
|
+
# @param optional block to be invoked when element method is called
|
595
630
|
#
|
596
|
-
def list_item(name, identifier=
|
631
|
+
def list_item(name, identifier={:index => 0}, &block)
|
597
632
|
define_method(name) do
|
598
633
|
return list_item_text_for identifier.clone unless block_given?
|
599
634
|
self.send("#{name}_element").text
|
@@ -618,15 +653,17 @@ module Druid
|
|
618
653
|
# ordered_list(:top_five, :id => 'top')
|
619
654
|
# # will generate 'top_five_element' and 'top_five?' methods
|
620
655
|
#
|
621
|
-
# @param [
|
622
|
-
# @param [Hash] identifier how we find an ordered list.
|
656
|
+
# @param [Symbol] the name used for the generated methods
|
657
|
+
# @param [Hash] identifier how we find an ordered list. You can use a multiple parameters
|
658
|
+
# by combining of any of the following except xpath. The valid keys are:
|
623
659
|
# * :class
|
624
660
|
# * :id
|
625
661
|
# * :index
|
626
662
|
# * :xpath
|
627
663
|
# * :name
|
664
|
+
# @param optional block to be invoked when element method is called
|
628
665
|
#
|
629
|
-
def ordered_list(name, identifier=
|
666
|
+
def ordered_list(name, identifier={:index => 0}, &block)
|
630
667
|
define_method("#{name}_element") do
|
631
668
|
return call_block(&block) if block_given?
|
632
669
|
ordered_list_for(identifier.clone)
|
@@ -649,17 +686,17 @@ module Druid
|
|
649
686
|
# # will generate 'address', 'address=', 'address_element',
|
650
687
|
# # 'address?' methods
|
651
688
|
#
|
652
|
-
# @param [
|
653
|
-
# @param [Hash] identifier how we find a text area.
|
689
|
+
# @param [Symbol] the name used for the generated methods
|
690
|
+
# @param [Hash] identifier how we find a text area. You can use a multiple parameters
|
691
|
+
# by combining of any of the following except xpath. The valid keys are:
|
654
692
|
# * :class
|
655
|
-
# * :css
|
656
693
|
# * :id
|
657
694
|
# * :index
|
658
695
|
# * :name
|
659
|
-
# * :tag_name
|
660
696
|
# * :xpath
|
697
|
+
# @param optional block to be invoked when element method is called
|
661
698
|
#
|
662
|
-
def text_area(name, identifier=
|
699
|
+
def text_area(name, identifier={:index => 0}, &block)
|
663
700
|
define_method("#{name}=") do |value|
|
664
701
|
return text_area_value_set(identifier.clone, value) unless block_given?
|
665
702
|
self.send("#{name}_element").value = value
|
@@ -688,15 +725,16 @@ module Druid
|
|
688
725
|
# unordered_list(:menu, :id => 'main_menu')
|
689
726
|
# # will generate 'menu_element' and 'menu?' methods
|
690
727
|
#
|
691
|
-
# @param [
|
692
|
-
# @param [Hash] identifier how we find an unordered list.
|
728
|
+
# @param [Symbol] the name used for the generated methods
|
729
|
+
# @param [Hash] identifier how we find an unordered list. You can use a multiple parameters
|
730
|
+
# by combining of any of the following except xpath. The valid keys are:
|
693
731
|
# * :class
|
694
732
|
# * :id
|
695
733
|
# * :index
|
696
734
|
# * :xpath
|
697
735
|
# * :name
|
698
|
-
#
|
699
|
-
def unordered_list(name, identifier=
|
736
|
+
# @param optional block to be invoked when element method is called
|
737
|
+
def unordered_list(name, identifier={:index => 0}, &block)
|
700
738
|
define_method("#{name}_element") do
|
701
739
|
return call_block(&block) if block_given?
|
702
740
|
unordered_list_for(identifier.clone)
|
@@ -717,7 +755,7 @@ module Druid
|
|
717
755
|
# h1(:title, :id => 'title')
|
718
756
|
# # will generate 'title', 'title_element', and 'title?' methods
|
719
757
|
#
|
720
|
-
# @param [
|
758
|
+
# @param [Symbol] the name used for the generated methods
|
721
759
|
# @param [Hash] identifier how we find a H1. You can use a multiple paramaters
|
722
760
|
# by combining of any of the following except xpath. The valid keys are:
|
723
761
|
# * :class
|
@@ -727,7 +765,7 @@ module Druid
|
|
727
765
|
# * :xpath
|
728
766
|
# @param optional block to be invoked when element method is called
|
729
767
|
#
|
730
|
-
def h1(name, identifier=
|
768
|
+
def h1(name, identifier={:index => 0}, &block)
|
731
769
|
define_method(name) do
|
732
770
|
return h1_text_for identifier.clone unless block_given?
|
733
771
|
self.send("#{name}_element").text
|
@@ -751,7 +789,7 @@ module Druid
|
|
751
789
|
# h2(:title, :id => 'title')
|
752
790
|
# # will generate 'title', 'title_element', and 'title?' methods
|
753
791
|
#
|
754
|
-
# @param [
|
792
|
+
# @param [Symbol] the name used for the generated methods
|
755
793
|
# @param [Hash] identifier how we find a H2. You can use a multiple paramaters
|
756
794
|
# by combining of any of the following except xpath. The valid keys are:
|
757
795
|
# * :class
|
@@ -761,7 +799,7 @@ module Druid
|
|
761
799
|
# * :xpath
|
762
800
|
# @param optional block to be invoked when element method is called
|
763
801
|
#
|
764
|
-
def h2(name, identifier=
|
802
|
+
def h2(name, identifier={:index => 0}, &block)
|
765
803
|
define_method(name) do
|
766
804
|
return h2_text_for identifier.clone unless block_given?
|
767
805
|
self.send("#{name}_element").text
|
@@ -785,7 +823,7 @@ module Druid
|
|
785
823
|
# h3(:title, :id => 'title')
|
786
824
|
# # will generate 'title', 'title_element', and 'title?' methods
|
787
825
|
#
|
788
|
-
# @param [
|
826
|
+
# @param [Symbol] the name used for the generated methods
|
789
827
|
# @param [Hash] identifier how we find a H3. You can use a multiple paramaters
|
790
828
|
# by combining of any of the following except xpath. The valid keys are:
|
791
829
|
# * :class
|
@@ -795,7 +833,7 @@ module Druid
|
|
795
833
|
# * :xpath
|
796
834
|
# @param optional block to be invoked when element method is called
|
797
835
|
#
|
798
|
-
def h3(name, identifier=
|
836
|
+
def h3(name, identifier={:index => 0}, &block)
|
799
837
|
define_method(name) do
|
800
838
|
return h3_text_for identifier.clone unless block_given?
|
801
839
|
self.send("#{name}_element").text
|
@@ -819,7 +857,7 @@ module Druid
|
|
819
857
|
# h4(:title, :id => 'title')
|
820
858
|
# # will generate 'title', 'title_element', and 'title?' methods
|
821
859
|
#
|
822
|
-
# @param [
|
860
|
+
# @param [Symbol] the name used for the generated methods
|
823
861
|
# @param [Hash] identifier how we find a H4. You can use a multiple paramaters
|
824
862
|
# by combining of any of the following except xpath. The valid keys are:
|
825
863
|
# * :class
|
@@ -829,7 +867,7 @@ module Druid
|
|
829
867
|
# * :xpath
|
830
868
|
# @param optional block to be invoked when element method is called
|
831
869
|
#
|
832
|
-
def h4(name, identifier=
|
870
|
+
def h4(name, identifier={:index => 0}, &block)
|
833
871
|
define_method(name) do
|
834
872
|
return h4_text_for identifier.clone unless block_given?
|
835
873
|
self.send("#{name}_element").text
|
@@ -853,7 +891,7 @@ module Druid
|
|
853
891
|
# h5(:title, :id => 'title')
|
854
892
|
# # will generate 'title', 'title_element', and 'title?' methods
|
855
893
|
#
|
856
|
-
# @param [
|
894
|
+
# @param [Symbol] the name used for the generated methods
|
857
895
|
# @param [Hash] identifier how we find a H5. You can use a multiple paramaters
|
858
896
|
# by combining of any of the following except xpath. The valid keys are:
|
859
897
|
# * :class
|
@@ -863,7 +901,7 @@ module Druid
|
|
863
901
|
# * :xpath
|
864
902
|
# @param optional block to be invoked when element method is called
|
865
903
|
#
|
866
|
-
def h5(name, identifier=
|
904
|
+
def h5(name, identifier={:index => 0}, &block)
|
867
905
|
define_method(name) do
|
868
906
|
return h5_text_for identifier.clone unless block_given?
|
869
907
|
self.send("#{name}_element").text
|
@@ -887,7 +925,7 @@ module Druid
|
|
887
925
|
# h6(:title, :id => 'title')
|
888
926
|
# # will generate 'title', 'title_element', and 'title?' methods
|
889
927
|
#
|
890
|
-
# @param [
|
928
|
+
# @param [Symbol] the name used for the generated methods
|
891
929
|
# @param [Hash] identifier how we find a H6. You can use a multiple paramaters
|
892
930
|
# by combining of any of the following except xpath. The valid keys are:
|
893
931
|
# * :class
|
@@ -897,7 +935,7 @@ module Druid
|
|
897
935
|
# * :xpath
|
898
936
|
# @param optional block to be invoked when element method is called
|
899
937
|
#
|
900
|
-
def h6(name, identifier=
|
938
|
+
def h6(name, identifier={:index => 0}, &block)
|
901
939
|
define_method(name) do
|
902
940
|
return h6_text_for identifier.clone unless block_given?
|
903
941
|
self.send("#{name}_element").text
|
@@ -921,7 +959,7 @@ module Druid
|
|
921
959
|
# paragraph(:title, :id => 'title')
|
922
960
|
# # will generate 'title', 'title_element', and 'title?' methods
|
923
961
|
#
|
924
|
-
# @param [
|
962
|
+
# @param [Symbol] the name used for the generated methods
|
925
963
|
# @param [Hash] identifier how we find a paragraph. You can use a multiple paramaters
|
926
964
|
# by combining of any of the following except xpath. The valid keys are:
|
927
965
|
# * :class
|
@@ -931,7 +969,7 @@ module Druid
|
|
931
969
|
# * :xpath
|
932
970
|
# @param optional block to be invoked when element method is called
|
933
971
|
#
|
934
|
-
def paragraph(name, identifier=
|
972
|
+
def paragraph(name, identifier={:index => 0}, &block)
|
935
973
|
define_method(name) do
|
936
974
|
return paragraph_text_for identifier.clone unless block_given?
|
937
975
|
self.send("#{name}_element").text
|
@@ -955,7 +993,7 @@ module Druid
|
|
955
993
|
# file_field(:the_file, :id => 'file_to_upload')
|
956
994
|
# # will generate 'the_file=', 'the_file_element', and 'the_file?' methods
|
957
995
|
#
|
958
|
-
# @param [
|
996
|
+
# @param [Symbol] the name used for the generated methods
|
959
997
|
# @param [Hash] identifier how we find a file_field. You can use a multiple paramaters
|
960
998
|
# by combining of any of the following except xpath. The valid keys are:
|
961
999
|
# * :class
|
@@ -966,7 +1004,7 @@ module Druid
|
|
966
1004
|
# * :xpath
|
967
1005
|
# @param optional block to be invoked when element method is called
|
968
1006
|
#
|
969
|
-
def file_field(name, identifier=
|
1007
|
+
def file_field(name, identifier={:index => 0}, &block)
|
970
1008
|
define_method("#{name}=") do |value|
|
971
1009
|
return file_field_value_set(identifier.clone, value) unless block_given?
|
972
1010
|
self.send("#{name}_element").value = value
|
@@ -989,7 +1027,7 @@ module Druid
|
|
989
1027
|
# label(:message, :id => 'message')
|
990
1028
|
# # will generate 'message', 'message_element', and 'message?' methods
|
991
1029
|
#
|
992
|
-
# @param [
|
1030
|
+
# @param [Symbol] the name used for the generated methods
|
993
1031
|
# @param [Hash] identifier how we find a label. You can use a multiple parameters
|
994
1032
|
# by combining of any of the following except xpath. The valid keys are:
|
995
1033
|
# * :class
|
@@ -1000,7 +1038,7 @@ module Druid
|
|
1000
1038
|
# * :xpath
|
1001
1039
|
# @param optional block to be invoked when element method is called
|
1002
1040
|
#
|
1003
|
-
def label(name, identifier=
|
1041
|
+
def label(name, identifier={:index => 0}, &block)
|
1004
1042
|
define_method(name) do
|
1005
1043
|
return label_text_for identifier.clone unless block_given?
|
1006
1044
|
self.send("#{name}_element").text
|
@@ -1024,7 +1062,7 @@ module Druid
|
|
1024
1062
|
# element(:titile, :id => 'title')
|
1025
1063
|
# # will generate 'title'm 'title_element', and 'title?' methods
|
1026
1064
|
#
|
1027
|
-
# @param [
|
1065
|
+
# @param [Symbol] the name used for the generated methods
|
1028
1066
|
# @param [Hash] identifier how we find an element. You can use a multiple parameters
|
1029
1067
|
# by combining of any of the following except xpath. The valid keys are:
|
1030
1068
|
# * :class
|
@@ -1034,7 +1072,7 @@ module Druid
|
|
1034
1072
|
# * :xpath
|
1035
1073
|
# @param optional block to be invoked when element method is called
|
1036
1074
|
#
|
1037
|
-
def element(name, tag, identifier=
|
1075
|
+
def element(name, tag, identifier={:index => 0}, &block)
|
1038
1076
|
define_method("#{name}") do
|
1039
1077
|
self.send("#{name}_element").text
|
1040
1078
|
end
|