Class: TestCentricity::List
Constant Summary
Constants inherited
from UIElement
UIElement::CSS_SELECTORS, UIElement::XPATH_SELECTORS
Instance Attribute Summary collapse
Attributes inherited from UIElement
#alt_locator, #context, #locator, #locator_type, #name, #parent, #type
Instance Method Summary
collapse
Methods inherited from UIElement
#clear_alt_locator, #click, #click_at, #disabled?, #displayed?, #double_click, #drag_and_drop, #drag_by, #enabled?, #exists?, #get_attribute, #get_locator, #get_name, #get_native_attribute, #get_object_type, #get_siebel_object_type, #get_value, #height, #hidden?, #hover, #invoke_siebel_dialog, #right_click, #send_keys, #set, #set_alt_locator, #set_locator_type, #verify_value, #visible?, #wait_until_exists, #wait_until_gone, #wait_until_hidden, #wait_until_value_changes, #wait_until_value_is, #wait_until_visible, #width, #x, #y
Constructor Details
#initialize(name, parent, locator, context) ⇒ List
Returns a new instance of List.
5
6
7
8
9
|
# File 'lib/testcentricity_web/web_elements/list.rb', line 5
def initialize(name, parent, locator, context)
super
@type = :list
define_list_elements({ :list_item => 'li' })
end
|
Instance Attribute Details
#list_item ⇒ Object
Returns the value of attribute list_item.
3
4
5
|
# File 'lib/testcentricity_web/web_elements/list.rb', line 3
def list_item
@list_item
end
|
Instance Method Details
#define_list_elements(element_spec) ⇒ Object
11
12
13
14
15
16
17
18
19
20
|
# File 'lib/testcentricity_web/web_elements/list.rb', line 11
def define_list_elements(element_spec)
element_spec.each do |element, value|
case element
when :list_item
@list_item = value
else
raise "#{element} is not a recognized list element"
end
end
end
|
#get_all_items_count ⇒ Object
51
52
53
54
55
|
# File 'lib/testcentricity_web/web_elements/list.rb', line 51
def get_all_items_count
obj, = find_element
object_not_found_exception(obj, nil)
obj.all(@list_item, :visible => :all).count
end
|
#get_all_list_items(element_spec = nil) ⇒ Object
44
45
46
47
48
49
|
# File 'lib/testcentricity_web/web_elements/list.rb', line 44
def get_all_list_items(element_spec = nil)
define_list_elements(element_spec) unless element_spec.nil?
obj, = find_element
object_not_found_exception(obj, nil)
obj.all(@list_item, :visible => :all).collect(&:text)
end
|
#get_item_count ⇒ Object
38
39
40
41
42
|
# File 'lib/testcentricity_web/web_elements/list.rb', line 38
def get_item_count
obj, = find_element
object_not_found_exception(obj, nil)
obj.all(@list_item).count
end
|
#get_list_item(index, visible = true) ⇒ Object
29
30
31
32
33
34
35
36
|
# File 'lib/testcentricity_web/web_elements/list.rb', line 29
def get_list_item(index, visible = true)
if visible
items = get_list_items
else
items = get_all_list_items
end
items[index - 1]
end
|
#get_list_items(element_spec = nil) ⇒ Object
22
23
24
25
26
27
|
# File 'lib/testcentricity_web/web_elements/list.rb', line 22
def get_list_items(element_spec = nil)
define_list_elements(element_spec) unless element_spec.nil?
obj, = find_element
object_not_found_exception(obj, nil)
obj.all(@list_item).collect(&:text)
end
|
#get_list_row_locator(row) ⇒ Object
64
65
66
67
68
69
70
71
|
# File 'lib/testcentricity_web/web_elements/list.rb', line 64
def get_list_row_locator(row)
case @locator_type
when :xpath
"#{@locator}/#{@list_item}[#{row}]"
when :css
"#{@locator} > #{@list_item}:nth-of-type(#{row})"
end
end
|
#verify_list_items(expected, enqueue = false) ⇒ Object
57
58
59
60
61
62
|
# File 'lib/testcentricity_web/web_elements/list.rb', line 57
def verify_list_items(expected, enqueue = false)
actual = get_list_items
enqueue ?
ExceptionQueue.enqueue_assert_equal(expected, actual, "Expected list #{object_ref_message}") :
assert_equal(expected, actual, "Expected list #{object_ref_message} to be #{expected} but found #{actual}")
end
|
#wait_until_item_count_changes(seconds = nil) ⇒ Object
91
92
93
94
95
96
97
98
|
# File 'lib/testcentricity_web/web_elements/list.rb', line 91
def wait_until_item_count_changes(seconds = nil)
value = get_item_count
timeout = seconds.nil? ? Capybara.default_max_wait_time : seconds
wait = Selenium::WebDriver::Wait.new(timeout: timeout)
wait.until { get_item_count != value }
rescue
raise "Value of List #{object_ref_message} failed to change from '#{value}' after #{timeout} seconds" if get_item_count == value
end
|
#wait_until_item_count_is(value, seconds = nil) ⇒ Object
Wait until the list's item_count equals the specified value, or until the specified wait time has expired. If the wait
time is nil, then the wait time will be Capybara.default_max_wait_time.
83
84
85
86
87
88
89
|
# File 'lib/testcentricity_web/web_elements/list.rb', line 83
def wait_until_item_count_is(value, seconds = nil)
timeout = seconds.nil? ? Capybara.default_max_wait_time : seconds
wait = Selenium::WebDriver::Wait.new(timeout: timeout)
wait.until { compare(value, get_item_count) }
rescue
raise "Value of List #{object_ref_message} failed to equal '#{value}' after #{timeout} seconds" unless get_item_count == value
end
|