appium_lib 9.6.1 → 9.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +2 -2
  3. data/CHANGELOG.md +43 -0
  4. data/Rakefile +1 -1
  5. data/appium_lib.gemspec +1 -1
  6. data/docs/android_docs.md +440 -1295
  7. data/docs/docs.md +10 -103
  8. data/docs/index_paths.md +2 -0
  9. data/docs/ios_docs.md +725 -1674
  10. data/docs/migration.md +17 -0
  11. data/lib/appium_lib.rb +1 -2
  12. data/lib/appium_lib/android/android.rb +20 -0
  13. data/lib/appium_lib/android/{helper.rb → common/helper.rb} +1 -1
  14. data/lib/appium_lib/android/uiautomator2.rb +5 -4
  15. data/lib/appium_lib/android/uiautomator2/bridge.rb +16 -0
  16. data/lib/appium_lib/appium.rb +201 -0
  17. data/lib/appium_lib/common/helper.rb +18 -20
  18. data/lib/appium_lib/common/log.rb +24 -0
  19. data/lib/appium_lib/common/multi_touch.rb +89 -0
  20. data/lib/appium_lib/common/touch_actions.rb +48 -0
  21. data/lib/appium_lib/common/wait.rb +10 -49
  22. data/lib/appium_lib/core/android.rb +4 -0
  23. data/lib/appium_lib/core/android/device.rb +142 -0
  24. data/lib/appium_lib/core/android/search_context.rb +17 -0
  25. data/lib/appium_lib/core/android/uiautomator1/bridge.rb +16 -0
  26. data/lib/appium_lib/core/android/uiautomator2/bridge.rb +16 -0
  27. data/lib/appium_lib/core/android_uiautomator2.rb +4 -0
  28. data/lib/appium_lib/core/common.rb +6 -0
  29. data/lib/appium_lib/core/common/base.rb +8 -0
  30. data/lib/appium_lib/core/common/base/bridge.rb +47 -0
  31. data/lib/appium_lib/core/common/base/capabilities.rb +16 -0
  32. data/lib/appium_lib/core/common/base/command.rb +10 -0
  33. data/lib/appium_lib/core/common/base/driver.rb +40 -0
  34. data/lib/appium_lib/core/common/base/http_default.rb +12 -0
  35. data/lib/appium_lib/core/common/base/search_context.rb +89 -0
  36. data/lib/appium_lib/core/common/base/wait.rb +56 -0
  37. data/lib/appium_lib/{common → core/common}/command.rb +20 -16
  38. data/lib/appium_lib/core/common/device.rb +470 -0
  39. data/lib/appium_lib/core/common/error.rb +13 -0
  40. data/lib/appium_lib/core/common/log.rb +30 -0
  41. data/lib/appium_lib/{logger.rb → core/common/logger.rb} +2 -0
  42. data/lib/appium_lib/core/core.rb +38 -0
  43. data/lib/appium_lib/core/device/multi_touch.rb +213 -0
  44. data/lib/appium_lib/core/device/touch_actions.rb +206 -0
  45. data/lib/appium_lib/core/driver.rb +274 -0
  46. data/lib/appium_lib/core/ios.rb +6 -0
  47. data/lib/appium_lib/core/ios/device.rb +44 -0
  48. data/lib/appium_lib/core/ios/search_context.rb +27 -0
  49. data/lib/appium_lib/core/ios/uiautomation/bridge.rb +17 -0
  50. data/lib/appium_lib/core/ios/uiautomation/patch.rb +20 -0
  51. data/lib/appium_lib/core/ios/xcuitest/bridge.rb +18 -0
  52. data/lib/appium_lib/{ios → core/ios}/xcuitest/device.rb +5 -5
  53. data/lib/appium_lib/{ios → core/ios}/xcuitest/search_context.rb +13 -9
  54. data/lib/appium_lib/core/ios_xcuitest.rb +7 -0
  55. data/lib/appium_lib/core/patch.rb +56 -0
  56. data/lib/appium_lib/driver.rb +174 -446
  57. data/lib/appium_lib/ios/{errors.rb → common/errors.rb} +0 -0
  58. data/lib/appium_lib/ios/{helper.rb → common/helper.rb} +9 -110
  59. data/lib/appium_lib/ios/ios.rb +20 -0
  60. data/lib/appium_lib/ios/xcuitest.rb +1 -3
  61. data/lib/appium_lib/ios/xcuitest/bridge.rb +19 -0
  62. data/lib/appium_lib/ios/xcuitest/command.rb +4 -1
  63. data/lib/appium_lib/ios/xcuitest/{gestures.rb → command/gestures.rb} +1 -1
  64. data/lib/appium_lib/ios/xcuitest/element.rb +1 -18
  65. data/lib/appium_lib/ios/xcuitest/helper.rb +0 -6
  66. data/lib/appium_lib/sauce_labs.rb +29 -0
  67. data/lib/appium_lib/version.rb +5 -0
  68. data/release_notes.md +8 -0
  69. metadata +50 -25
  70. data/lib/appium_lib/android/client_xpath.rb +0 -51
  71. data/lib/appium_lib/android/device.rb +0 -39
  72. data/lib/appium_lib/android/mobile_methods.rb +0 -15
  73. data/lib/appium_lib/android/patch.rb +0 -16
  74. data/lib/appium_lib/capabilities.rb +0 -13
  75. data/lib/appium_lib/common/element/window.rb +0 -10
  76. data/lib/appium_lib/common/error.rb +0 -8
  77. data/lib/appium_lib/common/patch.rb +0 -190
  78. data/lib/appium_lib/common/search_context.rb +0 -10
  79. data/lib/appium_lib/common/version.rb +0 -5
  80. data/lib/appium_lib/device/device.rb +0 -611
  81. data/lib/appium_lib/device/multi_touch.rb +0 -225
  82. data/lib/appium_lib/device/touch_actions.rb +0 -230
  83. data/lib/appium_lib/ios/mobile_methods.rb +0 -25
  84. data/lib/appium_lib/ios/patch.rb +0 -22
@@ -12,6 +12,7 @@ module Appium
12
12
  _print_attr(type, page['name'], page['label'], page['value'], page['hint'], page['visible'])
13
13
  end
14
14
 
15
+ # @private
15
16
  def _print_attr(type, name, label, value, hint, visible) # rubocop:disable Metrics/ParameterLists
16
17
  if name == label && name == value
17
18
  puts type.to_s if name || label || value || hint || visible
@@ -43,97 +44,13 @@ module Appium
43
44
  8226.chr('UTF-8') * length
44
45
  end
45
46
 
46
- # Returns a string of interesting elements. iOS only.
47
- #
48
- # Defaults to inspecting the 1st windows source only.
49
- # use get_page(get_source) for all window sources
50
- #
51
- # @option element [Object] the element to search. omit to search everything
52
- # @option class_name [String,Symbol] the class name to filter on. case insensitive include match.
53
- # @return [String]
54
- # @deprecated
55
- def get_page(element = source_window(0), class_name = nil)
56
- warn '[DEPRECATION] get_page will be removed. Please use page or source instead.'
57
-
58
- lazy_load_strings # populate @strings_xml
59
- class_name = class_name.to_s.downcase
60
-
61
- # @private
62
- def empty(ele)
63
- (ele['name'] || ele['label'] || ele['value']).nil?
64
- end
65
-
66
- # @private
67
- def fix_space(s)
68
- # if s is an int, we can't call .empty
69
- return nil if s.nil? || (s.respond_to?(:empty) && s.empty?)
70
- # ints don't respond to force encoding
71
- # ensure we're converting to a string
72
- unless s.respond_to? :force_encoding
73
- s_s = s.to_s
74
- return s_s.empty? ? nil : s_s
75
- end
76
- # char code 160 (name, label) vs 32 (value) will break comparison.
77
- # convert string to binary and remove 160.
78
- # \xC2\xA0
79
- s = s.force_encoding('binary').gsub("\xC2\xA0".force_encoding('binary'), ' ') if s
80
- s.empty? ? nil : s.force_encoding('UTF-8')
81
- end
82
-
83
- unless empty(element) || element['visible'] == false
84
- name = fix_space element['name']
85
- label = fix_space element['label']
86
- value = fix_space element['value']
87
- hint = fix_space element['hint']
88
- visible = fix_space element['visible']
89
- type = fix_space element['type']
90
-
91
- # if class_name is set, mark non-matches as invisible
92
- visible = (type.downcase.include? class_name).to_s if class_name
93
- if visible && visible == 'true'
94
-
95
- UITestElementsPrinter.new._print_attr(type, name, label, value, hint, visible)
96
-
97
- # there may be many ids with the same value.
98
- # output all exact matches.
99
- attributes = [name, label, value, hint].select { |attr| !attr.nil? }
100
- partial = {}
101
- id_matches = @strings_xml.select do |key, val|
102
- next if val.nil? || val.empty?
103
- partial[key] = val if attributes.detect { |attr| attr.include?(val) }
104
- attributes.detect { |attr| val == attr }
105
- end
106
-
107
- # If there are no exact matches, display partial matches.
108
- id_matches = partial if id_matches.empty?
109
-
110
- unless id_matches.empty?
111
- match_str = ''
112
- max_len = id_matches.keys.max_by(&:length).length
113
-
114
- # [0] = key, [1] = val
115
- id_matches.each do |key, val|
116
- arrow_space = ' ' * (max_len - key.length).to_i
117
- match_str += ' ' * 7 + "#{key} #{arrow_space}=> #{val}\n"
118
- end
119
- puts " id: #{match_str.strip}\n"
120
- end
121
- end
122
- end
123
-
124
- children = element['children']
125
- children.each { |c| get_page c, class_name } if children
126
- nil
127
- end
128
-
129
47
  # Prints a string of interesting elements to the console.
130
48
  #
131
- # Example
132
- #
133
- # ```ruby
134
- # page class: :UIAButton # filter on buttons
135
- # page class: :UIAButton, window: 1
136
- # ```
49
+ # @example
50
+ # ```ruby
51
+ # page class: :UIAButton # filter on buttons
52
+ # page class: :UIAButton, window: 1
53
+ # ```
137
54
  #
138
55
  # @option visible [Symbol] visible value to filter on
139
56
  # @option class [Symbol] class name to filter on
@@ -145,7 +62,7 @@ module Appium
145
62
  # current_context may be nil which breaks start_with
146
63
  if current_context && current_context.start_with?('WEBVIEW')
147
64
  s = get_source
148
- parser = @android_html_parser ||= Nokogiri::HTML::SAX::Parser.new(Common::HTMLElements.new)
65
+ parser = @android_html_parser ||= Nokogiri::HTML::SAX::Parser.new(Appium::Common::HTMLElements.new)
149
66
  parser.document.reset
150
67
  parser.document.filter = class_name
151
68
  parser.parse s
@@ -163,22 +80,11 @@ module Appium
163
80
 
164
81
  # Gets the JSON source of window number
165
82
  # @return [JSON]
166
- def source_window(window_number = nil)
167
- warn '[DEPRECATION] The argument window_number will be removed. Plesse remove window_number' unless window_number
83
+ def source_window(_window_number = nil)
84
+ warn '[DEPRECATION] source_window will be removed. Please use source instead.'
168
85
  get_source
169
86
  end
170
87
 
171
- # Prints parsed page source to console.
172
- #
173
- # example: page_window 0
174
- #
175
- # @param window_number [Integer] the int index of the target window
176
- # @return [void]
177
- def page_window(window_number = 0)
178
- get_page source_window window_number
179
- nil
180
- end
181
-
182
88
  # Find by id
183
89
  # @param id [String] the id to search for
184
90
  # @return [Element]
@@ -186,13 +92,6 @@ module Appium
186
92
  find_element(:id, id)
187
93
  end
188
94
 
189
- # Return the iOS version as an array of integers
190
- # @return [Array<Integer>]
191
- def ios_version
192
- ios_version = execute_script 'UIATarget.localTarget().systemVersion()'
193
- ios_version.split('.').map(&:to_i)
194
- end
195
-
196
95
  # Get the element of type class_name at matching index.
197
96
  # @param class_name [String] the class name to find
198
97
  # @param index [Integer] the index
@@ -0,0 +1,20 @@
1
+ require_relative 'common/helper'
2
+ require_relative 'common/errors'
3
+
4
+ require_relative 'element/alert'
5
+ require_relative 'element/button'
6
+ require_relative 'element/generic'
7
+ require_relative 'element/textfield'
8
+ require_relative 'element/text'
9
+
10
+ require_relative 'xcuitest'
11
+
12
+ module Appium
13
+ module Ios
14
+ class Bridge
15
+ def self.for(target)
16
+ target.extend Appium::Ios
17
+ end
18
+ end
19
+ end
20
+ end
@@ -1,10 +1,8 @@
1
- require_relative 'xcuitest/search_context'
2
1
  require_relative 'xcuitest/element'
3
- require_relative 'xcuitest/gestures'
4
2
  require_relative 'xcuitest/command'
5
- require_relative 'xcuitest/device'
6
3
  require_relative 'xcuitest/helper'
7
4
  require_relative 'xcuitest/element'
5
+ require_relative 'xcuitest/bridge'
8
6
 
9
7
  module Appium
10
8
  module Ios
@@ -0,0 +1,19 @@
1
+ require_relative '../ios'
2
+
3
+ module Appium
4
+ module Ios
5
+ module Xcuitest
6
+ class Bridge
7
+ def self.for(target)
8
+ target.extend Appium::Ios
9
+ target.extend Appium::Ios::Device
10
+ target.extend Appium::Ios::Xcuitest
11
+ target.extend Appium::Ios::Xcuitest::Command
12
+ target.extend Appium::Ios::Xcuitest::Helper
13
+ target.extend Appium::Ios::Xcuitest::Gesture
14
+ target.extend Appium::Ios::Xcuitest::Element
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,8 +1,11 @@
1
1
  require_relative 'command/pasteboard'
2
+ require_relative 'command/gestures'
2
3
 
3
4
  module Appium
4
5
  module Ios
5
- module Command
6
+ module Xcuitest
7
+ module Command
8
+ end
6
9
  end
7
10
  end
8
11
  end
@@ -85,7 +85,7 @@ module Appium
85
85
  @driver.execute_script 'mobile: touchAndHold', args
86
86
  end
87
87
 
88
- # @param [Element] :element Element to long tap on.
88
+ # @param [Element] element Element to long tap on.
89
89
  #
90
90
  # ```ruby
91
91
  # two_finger_tap element: find_element(:accessibility_id, "some item")
@@ -7,24 +7,7 @@ module Appium
7
7
  module Ios
8
8
  module Xcuitest
9
9
  module Element
10
- # @private
11
- # class_eval inside a method because class Selenium::WebDriver::Element
12
- # will trigger as soon as the file is required. in contrast a method
13
- # will trigger only when invoked.
14
- def patch_webdriver_element
15
- Selenium::WebDriver::Element.class_eval do
16
- # Enable access to iOS accessibility label
17
- # accessibility identifier is supported as 'name'
18
- def label
19
- attribute('label')
20
- end
21
-
22
- # Cross platform way of entering text into a textfield
23
- def type(text)
24
- send_keys text
25
- end # def type
26
- end # Selenium::WebDriver::Element.class_eval
27
- end # def patch_webdriver_element
10
+ # no
28
11
  end # module Element
29
12
  end # module Xcuitest
30
13
  end # module Ios
@@ -2,12 +2,6 @@ module Appium
2
2
  module Ios
3
3
  module Xcuitest
4
4
  module Helper
5
- # Return the iOS version as an array of integers
6
- # @return [Array<Integer>]
7
- def ios_version
8
- @driver.capabilities['platformVersion']
9
- end
10
-
11
5
  # @private
12
6
  def string_attr_exact(class_name, attr, value)
13
7
  if attr == '*'
@@ -0,0 +1,29 @@
1
+ module Appium
2
+ class SauceLabs
3
+ # Username for use on Sauce Labs. Set `false` to disable Sauce, even when SAUCE_USERNAME is in ENV.
4
+ attr_reader :username
5
+ # Access Key for use on Sauce Labs. Set `false` to disable Sauce, even when SAUCE_ACCESS_KEY is in ENV.
6
+ attr_reader :access_key
7
+ # Override the Sauce Appium endpoint to allow e.g. TestObject tests
8
+ attr_reader :endpoint
9
+
10
+ def initialize(appium_lib_opts)
11
+ @username = appium_lib_opts.fetch :sauce_username, ENV['SAUCE_USERNAME']
12
+ @username = nil if !@username || (@username.is_a?(String) && @username.empty?)
13
+
14
+ @access_key = appium_lib_opts.fetch :sauce_access_key, ENV['SAUCE_ACCESS_KEY']
15
+ @access_key = nil if !@access_key || (@access_key.is_a?(String) && @access_key.empty?)
16
+
17
+ @endpoint = appium_lib_opts.fetch :sauce_endpoint, ENV['SAUCE_ENDPOINT']
18
+ @endpoint = 'ondemand.saucelabs.com:443/wd/hub' if !@endpoint || (@endpoint.is_a?(String) && @endpoint.empty?)
19
+ end
20
+
21
+ def sauce_server_url?
22
+ !username.nil? && !access_key.nil?
23
+ end
24
+
25
+ def server_url
26
+ sauce_server_url? ? "https://#{username}:#{access_key}@#{endpoint}" : 'http://127.0.0.1:4723/wd/hub'
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,5 @@
1
+ module Appium
2
+ # Version and Date are defined on the 'Appium' module, not 'Appium::Common'
3
+ VERSION = '9.7.0'.freeze unless defined? ::Appium::VERSION
4
+ DATE = '2017-10-01'.freeze unless defined? ::Appium::DATE
5
+ end
@@ -1,3 +1,11 @@
1
+ #### v9.6.1 2017-08-27
2
+
3
+ - [a542287](https://github.com/appium/ruby_lib/commit/a5422874b4ab60430ab9d58289aac001ecd90ecf) [Release 9 6 1 (#650)](https://github.com/appium/ruby_lib/issues/650)
4
+ - [cb9450d](https://github.com/appium/ruby_lib/commit/cb9450d207fb2e23b4dfef4318f47ea3d04c7689) [refactor: divide dependencies (#649)](https://github.com/appium/ruby_lib/issues/649)
5
+ - [0673ad7](https://github.com/appium/ruby_lib/commit/0673ad71a0c13e72c96fa7928ce1077c3684d4c2) [feature: add commands for get_pasteboard and set_pasteboard (#648)](https://github.com/appium/ruby_lib/issues/648)
6
+ - [420c855](https://github.com/appium/ruby_lib/commit/420c855efb27e2dd84fce8b0dbeb0e86d41f72ee) [use 1.8.0 to reduce constant ::Fixnum error (#647)](https://github.com/appium/ruby_lib/issues/647)
7
+
8
+
1
9
  #### v9.6.0 2017-08-20
2
10
 
3
11
  - [e1a2cd4](https://github.com/appium/ruby_lib/commit/e1a2cd493a370655b390a1d3803a85fbdb5f7f9d) [Release 9 6 0 (#643)](https://github.com/appium/ruby_lib/issues/643)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appium_lib
3
3
  version: !ruby/object:Gem::Version
4
- version: 9.6.1
4
+ version: 9.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - code@bootstraponline.com
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-27 00:00:00.000000000 Z
11
+ date: 2017-10-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: selenium-webdriver
@@ -253,55 +253,80 @@ files:
253
253
  - docs_gen/docs_from_js.md
254
254
  - docs_gen/make_docs.rb
255
255
  - lib/appium_lib.rb
256
- - lib/appium_lib/android/client_xpath.rb
257
- - lib/appium_lib/android/device.rb
256
+ - lib/appium_lib/android/android.rb
257
+ - lib/appium_lib/android/common/helper.rb
258
258
  - lib/appium_lib/android/element/alert.rb
259
259
  - lib/appium_lib/android/element/button.rb
260
260
  - lib/appium_lib/android/element/generic.rb
261
261
  - lib/appium_lib/android/element/text.rb
262
262
  - lib/appium_lib/android/element/textfield.rb
263
- - lib/appium_lib/android/helper.rb
264
- - lib/appium_lib/android/mobile_methods.rb
265
- - lib/appium_lib/android/patch.rb
266
263
  - lib/appium_lib/android/uiautomator2.rb
264
+ - lib/appium_lib/android/uiautomator2/bridge.rb
267
265
  - lib/appium_lib/android/uiautomator2/element.rb
268
266
  - lib/appium_lib/android/uiautomator2/element/button.rb
269
267
  - lib/appium_lib/android/uiautomator2/helper.rb
270
- - lib/appium_lib/capabilities.rb
271
- - lib/appium_lib/common/command.rb
272
- - lib/appium_lib/common/element/window.rb
273
- - lib/appium_lib/common/error.rb
268
+ - lib/appium_lib/appium.rb
274
269
  - lib/appium_lib/common/helper.rb
275
- - lib/appium_lib/common/patch.rb
276
- - lib/appium_lib/common/search_context.rb
277
- - lib/appium_lib/common/version.rb
270
+ - lib/appium_lib/common/log.rb
271
+ - lib/appium_lib/common/multi_touch.rb
272
+ - lib/appium_lib/common/touch_actions.rb
278
273
  - lib/appium_lib/common/wait.rb
279
- - lib/appium_lib/device/device.rb
280
- - lib/appium_lib/device/multi_touch.rb
281
- - lib/appium_lib/device/touch_actions.rb
274
+ - lib/appium_lib/core/android.rb
275
+ - lib/appium_lib/core/android/device.rb
276
+ - lib/appium_lib/core/android/search_context.rb
277
+ - lib/appium_lib/core/android/uiautomator1/bridge.rb
278
+ - lib/appium_lib/core/android/uiautomator2/bridge.rb
279
+ - lib/appium_lib/core/android_uiautomator2.rb
280
+ - lib/appium_lib/core/common.rb
281
+ - lib/appium_lib/core/common/base.rb
282
+ - lib/appium_lib/core/common/base/bridge.rb
283
+ - lib/appium_lib/core/common/base/capabilities.rb
284
+ - lib/appium_lib/core/common/base/command.rb
285
+ - lib/appium_lib/core/common/base/driver.rb
286
+ - lib/appium_lib/core/common/base/http_default.rb
287
+ - lib/appium_lib/core/common/base/search_context.rb
288
+ - lib/appium_lib/core/common/base/wait.rb
289
+ - lib/appium_lib/core/common/command.rb
290
+ - lib/appium_lib/core/common/device.rb
291
+ - lib/appium_lib/core/common/error.rb
292
+ - lib/appium_lib/core/common/log.rb
293
+ - lib/appium_lib/core/common/logger.rb
294
+ - lib/appium_lib/core/core.rb
295
+ - lib/appium_lib/core/device/multi_touch.rb
296
+ - lib/appium_lib/core/device/touch_actions.rb
297
+ - lib/appium_lib/core/driver.rb
298
+ - lib/appium_lib/core/ios.rb
299
+ - lib/appium_lib/core/ios/device.rb
300
+ - lib/appium_lib/core/ios/search_context.rb
301
+ - lib/appium_lib/core/ios/uiautomation/bridge.rb
302
+ - lib/appium_lib/core/ios/uiautomation/patch.rb
303
+ - lib/appium_lib/core/ios/xcuitest/bridge.rb
304
+ - lib/appium_lib/core/ios/xcuitest/device.rb
305
+ - lib/appium_lib/core/ios/xcuitest/search_context.rb
306
+ - lib/appium_lib/core/ios_xcuitest.rb
307
+ - lib/appium_lib/core/patch.rb
282
308
  - lib/appium_lib/driver.rb
309
+ - lib/appium_lib/ios/common/errors.rb
310
+ - lib/appium_lib/ios/common/helper.rb
283
311
  - lib/appium_lib/ios/element/alert.rb
284
312
  - lib/appium_lib/ios/element/button.rb
285
313
  - lib/appium_lib/ios/element/generic.rb
286
314
  - lib/appium_lib/ios/element/text.rb
287
315
  - lib/appium_lib/ios/element/textfield.rb
288
- - lib/appium_lib/ios/errors.rb
289
- - lib/appium_lib/ios/helper.rb
290
- - lib/appium_lib/ios/mobile_methods.rb
291
- - lib/appium_lib/ios/patch.rb
316
+ - lib/appium_lib/ios/ios.rb
292
317
  - lib/appium_lib/ios/xcuitest.rb
318
+ - lib/appium_lib/ios/xcuitest/bridge.rb
293
319
  - lib/appium_lib/ios/xcuitest/command.rb
320
+ - lib/appium_lib/ios/xcuitest/command/gestures.rb
294
321
  - lib/appium_lib/ios/xcuitest/command/pasteboard.rb
295
- - lib/appium_lib/ios/xcuitest/device.rb
296
322
  - lib/appium_lib/ios/xcuitest/element.rb
297
323
  - lib/appium_lib/ios/xcuitest/element/button.rb
298
324
  - lib/appium_lib/ios/xcuitest/element/generic.rb
299
325
  - lib/appium_lib/ios/xcuitest/element/text.rb
300
326
  - lib/appium_lib/ios/xcuitest/element/textfield.rb
301
- - lib/appium_lib/ios/xcuitest/gestures.rb
302
327
  - lib/appium_lib/ios/xcuitest/helper.rb
303
- - lib/appium_lib/ios/xcuitest/search_context.rb
304
- - lib/appium_lib/logger.rb
328
+ - lib/appium_lib/sauce_labs.rb
329
+ - lib/appium_lib/version.rb
305
330
  - readme.md
306
331
  - release_notes.md
307
332
  homepage: https://github.com/appium/ruby_lib