Class: Rufus::Drivers::DriverBase

Inherits:
Object
  • Object
show all
Defined in:
lib/rufus/drivers/driver_base.rb

Direct Known Subclasses

IOS_Device, IOS_Simulator

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#configObject (readonly)

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

Returns:

  • (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_elementsObject



166
167
168
# File 'lib/rufus/drivers/driver_base.rb', line 166

def all_elements
  elements_by_tag('UIAElement')
end

#buttonsObject



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

#capabilitiesObject

Raises:

  • (Exception)


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

Returns:

  • (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

Returns:

  • (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

Returns:

  • (Boolean)


54
55
56
# File 'lib/rufus/drivers/driver_base.rb', line 54

def enabled?(locator)
  find(locator).enabled?
end

#exists?(locator) ⇒ Boolean

Returns:

  • (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

#labelsObject



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

Returns:

  • (Boolean)


158
159
160
# File 'lib/rufus/drivers/driver_base.rb', line 158

def match?(element, name)
  element.attribute(:name).eql? name
end

#orientationObject



70
71
72
# File 'lib/rufus/drivers/driver_base.rb', line 70

def orientation
  selenium.orientation.to_s
end

#page_sourceObject



162
163
164
# File 'lib/rufus/drivers/driver_base.rb', line 162

def page_source
  selenium.page_source
end

#press_button(name) ⇒ Object



50
51
52
# File 'lib/rufus/drivers/driver_base.rb', line 50

def press_button name
  click(:name => name)
end

#quitObject



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

#scroll_to(locator) ⇒ Object



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_urlObject



18
19
20
# File 'lib/rufus/drivers/driver_base.rb', line 18

def server_url
  @url
end

#startObject



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_fieldsObject



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