Class: Rufus::Drivers::DriverBase
- Inherits:
-
Object
- Object
- Rufus::Drivers::DriverBase
show all
- Defined in:
- lib/rufus/drivers/driver_base.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
Instance Attribute Details
#config ⇒ Object
Returns the value of attribute config.
5
6
7
|
# File 'lib/rufus/drivers/driver_base.rb', line 5
def config
@config
end
|
Instance Method Details
#alert_shown? ⇒ Boolean
145
146
147
148
149
150
151
152
|
# File 'lib/rufus/drivers/driver_base.rb', line 145
def alert_shown?
all_elements.each do |element|
if is_alert?(element)
return true
end
end
false
end
|
#all_elements ⇒ Object
166
167
168
|
# File 'lib/rufus/drivers/driver_base.rb', line 166
def all_elements
elements_by_tag('UIAElement')
end
|
89
90
91
92
93
94
95
96
|
# File 'lib/rufus/drivers/driver_base.rb', line 89
def buttons
buttons = []
elements = elements_by_tag 'UIAButton'
elements.each do |element|
buttons << element.text
end
buttons
end
|
#capabilities ⇒ Object
7
|
# File 'lib/rufus/drivers/driver_base.rb', line 7
def capabilities; raise Exception; end
|
#cells(locator) ⇒ Object
36
37
38
39
40
|
# File 'lib/rufus/drivers/driver_base.rb', line 36
def cells(locator)
element = find(locator)
raise 'Expected view to be of type UIATableView' unless element.tag_name.eql? 'UIATableView'
element.find_elements(:tag_name, 'UIATableCell')
end
|
#class(locator) ⇒ Object
66
67
68
|
# File 'lib/rufus/drivers/driver_base.rb', line 66
def class(locator)
find(locator).tag_name
end
|
#class_for(element) ⇒ Object
154
155
156
|
# File 'lib/rufus/drivers/driver_base.rb', line 154
def class_for(element)
element.tag_name
end
|
#click(locator) ⇒ Object
46
47
48
|
# File 'lib/rufus/drivers/driver_base.rb', line 46
def click(locator)
find(locator).click
end
|
#click_alert(button) ⇒ Object
139
140
141
142
143
|
# File 'lib/rufus/drivers/driver_base.rb', line 139
def click_alert(button)
if alert_shown?
click_alert_button(button)
end
end
|
#contains_name_key?(locator) ⇒ Boolean
32
33
34
|
# File 'lib/rufus/drivers/driver_base.rb', line 32
def contains_name_key?(locator)
locator.keys[0].to_s.eql?('name')
end
|
#displayed?(locator) ⇒ Boolean
58
59
60
|
# File 'lib/rufus/drivers/driver_base.rb', line 58
def displayed?(locator)
find(locator).displayed?
end
|
#elements_by_tag(name) ⇒ Object
170
171
172
|
# File 'lib/rufus/drivers/driver_base.rb', line 170
def elements_by_tag(name)
selenium.find_elements(:tag_name, name)
end
|
#enabled?(locator) ⇒ Boolean
54
55
56
|
# File 'lib/rufus/drivers/driver_base.rb', line 54
def enabled?(locator)
find(locator).enabled?
end
|
#exists?(locator) ⇒ Boolean
42
43
44
|
# File 'lib/rufus/drivers/driver_base.rb', line 42
def exists?(locator)
not find(locator).nil?
end
|
#find(locator) ⇒ Object
22
23
24
25
26
27
28
29
30
|
# File 'lib/rufus/drivers/driver_base.rb', line 22
def find(locator)
how = locator.keys[0].to_sym
what = locator[how]
begin
selenium.find_element(how, what)
rescue Selenium::WebDriver::Error::NoSuchElementError
return nil
end
end
|
#find_alert(locator) ⇒ Object
129
130
131
132
133
134
135
136
137
|
# File 'lib/rufus/drivers/driver_base.rb', line 129
def find_alert(locator)
alert = nil
all_elements.each do |element|
if is_alert?(element)
alert = element if match?(element, locator[:name])
end
end
alert
end
|
#labels ⇒ Object
107
108
109
110
111
112
113
114
|
# File 'lib/rufus/drivers/driver_base.rb', line 107
def labels
labels = []
elements = elements_by_tag 'UIAStaticText'
elements.each do |element|
labels << element.text
end
labels
end
|
#match?(element, name) ⇒ Boolean
158
159
160
|
# File 'lib/rufus/drivers/driver_base.rb', line 158
def match?(element, name)
element.attribute(:name).eql? name
end
|
#orientation ⇒ Object
70
71
72
|
# File 'lib/rufus/drivers/driver_base.rb', line 70
def orientation
selenium.orientation.to_s
end
|
#page_source ⇒ Object
162
163
164
|
# File 'lib/rufus/drivers/driver_base.rb', line 162
def page_source
selenium.page_source
end
|
50
51
52
|
# File 'lib/rufus/drivers/driver_base.rb', line 50
def press_button name
click(:name => name)
end
|
#quit ⇒ Object
13
14
15
16
|
# File 'lib/rufus/drivers/driver_base.rb', line 13
def quit
selenium.quit
@selenium_driver = nil
end
|
#rotate(orientation) ⇒ Object
74
75
76
|
# File 'lib/rufus/drivers/driver_base.rb', line 74
def rotate(orientation)
selenium.rotate orientation
end
|
#screenshot(name) ⇒ Object
187
188
189
|
# File 'lib/rufus/drivers/driver_base.rb', line 187
def screenshot(name)
selenium.save_screenshot name
end
|
174
175
176
177
|
# File 'lib/rufus/drivers/driver_base.rb', line 174
def scroll_to(locator)
id = find(locator).ref
selenium.execute_script 'mobile: scrollTo', {'element' => id}
end
|
#sequence(*names, times) ⇒ Object
85
86
87
|
# File 'lib/rufus/drivers/driver_base.rb', line 85
def sequence(*names, times)
timed_sequence(names, times, 1)
end
|
#server_url ⇒ Object
18
19
20
|
# File 'lib/rufus/drivers/driver_base.rb', line 18
def server_url
@url
end
|
#start ⇒ Object
9
10
11
|
# File 'lib/rufus/drivers/driver_base.rb', line 9
def start
selenium.get url
end
|
#tap(x, y) ⇒ Object
183
184
185
|
# File 'lib/rufus/drivers/driver_base.rb', line 183
def tap(x, y)
selenium.execute_script 'mobile: tap', :x => x, :y => y
end
|
#text(locator) ⇒ Object
62
63
64
|
# File 'lib/rufus/drivers/driver_base.rb', line 62
def text(locator)
find(locator).text
end
|
#text_fields ⇒ Object
98
99
100
101
102
103
104
105
|
# File 'lib/rufus/drivers/driver_base.rb', line 98
def text_fields
fields = []
elements = elements_by_tag 'UIATextField'
elements.each do |element|
fields << element.text
end
fields
end
|
#timed_sequence(names, times, seconds) ⇒ Object
116
117
118
119
120
121
122
123
124
125
126
127
|
# File 'lib/rufus/drivers/driver_base.rb', line 116
def timed_sequence(names, times, seconds)
current = 0
until current == times
names.each do |name|
click(:name => name)
sleep seconds
end
current += 1
puts "sequence #{current} completed"
end
end
|
#touch_and_hold(element, duration) ⇒ Object
179
180
181
|
# File 'lib/rufus/drivers/driver_base.rb', line 179
def touch_and_hold(element, duration)
selenium.execute_script 'mobile: tap', element, duration
end
|
#type(keys, name) ⇒ Object
78
79
80
81
82
83
|
# File 'lib/rufus/drivers/driver_base.rb', line 78
def type(keys, name)
element = find(:name => name)
element.click
sleep 1
element.send_keys keys
end
|