appium_lib 0.5.16 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +1 -1
- data/docs/android_docs.md +122 -104
- data/docs/docs.md +1 -0
- data/docs/ios_docs.md +121 -103
- data/lib/appium_lib/android/helper.rb +1 -1
- data/lib/appium_lib/common/version.rb +2 -2
- data/lib/appium_lib/driver.rb +38 -22
- data/lib/appium_lib/ios/patch.rb +4 -3
- data/readme.md +4 -2
- data/release_notes.md +19 -0
- metadata +2 -2
@@ -361,7 +361,7 @@ module Appium::Android
|
|
361
361
|
# Returns a string containing interesting elements.
|
362
362
|
# @return [String]
|
363
363
|
def get_inspect
|
364
|
-
@selendroid ? get_selendroid_inspect : get_android_inspect
|
364
|
+
@device == :selendroid ? get_selendroid_inspect : get_android_inspect
|
365
365
|
end
|
366
366
|
|
367
367
|
# Intended for use with console.
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
module Appium
|
3
3
|
# Version and Date are defined on the 'Appium' module, not 'Appium::Common'
|
4
|
-
VERSION = '0.
|
5
|
-
DATE = '2013-
|
4
|
+
VERSION = '0.6.0' unless defined? ::Appium::VERSION
|
5
|
+
DATE = '2013-08-05' unless defined? ::Appium::DATE
|
6
6
|
end
|
data/lib/appium_lib/driver.rb
CHANGED
@@ -52,10 +52,15 @@ def load_appium_txt opts
|
|
52
52
|
|
53
53
|
update data, 'APP_PATH', 'APP_APK', 'APP_PACKAGE',
|
54
54
|
'APP_ACTIVITY', 'APP_WAIT_ACTIVITY',
|
55
|
-
'
|
55
|
+
'DEVICE'
|
56
56
|
|
57
57
|
# Ensure app path is absolute
|
58
|
-
ENV['APP_PATH'] = File.expand_path ENV['APP_PATH'] if ENV['APP_PATH']
|
58
|
+
ENV['APP_PATH'] = File.expand_path ENV['APP_PATH'] if ENV['APP_PATH'] &&
|
59
|
+
!ENV['APP_PATH'].empty?
|
60
|
+
|
61
|
+
if ! %w(ios android selendroid).include? ENV['DEVICE']
|
62
|
+
raise 'DEVICE must be ios, android, or selendroid'
|
63
|
+
end
|
59
64
|
end
|
60
65
|
|
61
66
|
# return list of require files as an array
|
@@ -74,6 +79,14 @@ def load_appium_txt opts
|
|
74
79
|
end
|
75
80
|
end
|
76
81
|
|
82
|
+
# Fix uninitialized constant Minitest (NameError)
|
83
|
+
module Minitest
|
84
|
+
# Fix superclass mismatch for class Spec
|
85
|
+
class Runnable; end
|
86
|
+
class Test < Runnable; end
|
87
|
+
class Spec < Test; end
|
88
|
+
end
|
89
|
+
|
77
90
|
module Appium
|
78
91
|
add_to_path __FILE__
|
79
92
|
|
@@ -105,10 +118,11 @@ module Appium
|
|
105
118
|
class Driver
|
106
119
|
@@loaded = false
|
107
120
|
|
108
|
-
attr_reader :default_wait, :app_path, :app_name, :
|
121
|
+
attr_reader :default_wait, :app_path, :app_name, :device,
|
109
122
|
:app_package, :app_activity, :app_wait_activity,
|
110
|
-
:sauce_username, :sauce_access_key, :port, :
|
123
|
+
:sauce_username, :sauce_access_key, :port, :debug
|
111
124
|
# Creates a new driver.
|
125
|
+
# :device is :android, :ios, or :selendroid
|
112
126
|
#
|
113
127
|
# ```ruby
|
114
128
|
# # Options include:
|
@@ -120,11 +134,12 @@ module Appium
|
|
120
134
|
# require 'appium_lib'
|
121
135
|
#
|
122
136
|
# # Start iOS driver
|
123
|
-
# app = { app_path: '/path/to/MyiOS.app'}
|
137
|
+
# app = { device: :ios, app_path: '/path/to/MyiOS.app'}
|
124
138
|
# Appium::Driver.new(app).start_driver
|
125
139
|
#
|
126
140
|
# # Start Android driver
|
127
|
-
# apk = {
|
141
|
+
# apk = { device: :android
|
142
|
+
# app_path: '/path/to/the.apk',
|
128
143
|
# app_package: 'com.example.pkg',
|
129
144
|
# app_activity: 'act.Start',
|
130
145
|
# app_wait_activity: 'act.Start'
|
@@ -152,10 +167,6 @@ module Appium
|
|
152
167
|
# The name to use for the test run on Sauce.
|
153
168
|
@app_name = opts.fetch :app_name, ENV['APP_NAME']
|
154
169
|
|
155
|
-
# If Android, this will toggle selendroid as a device
|
156
|
-
@selendroid = opts.fetch :selendroid, ENV['SELENDROID']
|
157
|
-
@selendroid = 'selendroid' if @selendroid
|
158
|
-
|
159
170
|
# Android app package
|
160
171
|
@app_package = opts.fetch :app_package, ENV['APP_PACKAGE']
|
161
172
|
|
@@ -173,12 +184,13 @@ module Appium
|
|
173
184
|
|
174
185
|
@port = opts.fetch :port, ENV['PORT'] || 4723
|
175
186
|
|
176
|
-
|
177
|
-
@
|
187
|
+
# :ios, :android, :selendroid
|
188
|
+
@device = opts.fetch :device, ENV['DEVICE'] || :ios
|
189
|
+
@device = @device.intern # device must be a symbol
|
178
190
|
|
179
191
|
# load common methods
|
180
192
|
extend Appium::Common
|
181
|
-
if @
|
193
|
+
if @device == :android
|
182
194
|
raise 'APP_ACTIVITY must be set.' if @app_activity.nil?
|
183
195
|
|
184
196
|
# load Android specific methods
|
@@ -197,7 +209,7 @@ module Appium
|
|
197
209
|
puts "Debug is: #{@debug}"
|
198
210
|
if @debug
|
199
211
|
ap opts unless opts.empty?
|
200
|
-
puts "
|
212
|
+
puts "Device is: #{@device}"
|
201
213
|
patch_webdriver_bridge
|
202
214
|
end
|
203
215
|
|
@@ -210,14 +222,18 @@ module Appium
|
|
210
222
|
@@loaded = true
|
211
223
|
# Promote Appium driver methods to Object instance methods.
|
212
224
|
$driver.public_methods(false).each do | m |
|
213
|
-
|
225
|
+
# not MiniTest::Spec
|
226
|
+
::Minitest::Spec.class_eval do
|
214
227
|
define_method m do | *args, &block |
|
215
228
|
begin
|
216
229
|
# puts "[Object.class_eval] Calling super for '#{m}'"
|
217
230
|
# prefer existing method.
|
218
231
|
# super will invoke method missing on driver
|
219
232
|
super(*args, &block)
|
220
|
-
|
233
|
+
# minitest also defines a name method,
|
234
|
+
# so rescue argument error
|
235
|
+
# and call the name method on $driver
|
236
|
+
rescue NoMethodError, ArgumentError
|
221
237
|
# puts "[Object.class_eval] '#{m}' not on super"
|
222
238
|
$driver.send m, *args, &block if $driver.respond_to?(m)
|
223
239
|
end
|
@@ -264,9 +280,8 @@ module Appium
|
|
264
280
|
browserName: 'Android',
|
265
281
|
platform: 'LINUX',
|
266
282
|
version: '4.2',
|
267
|
-
device: @
|
283
|
+
device: @device == :android ? 'Android' : 'selendroid',
|
268
284
|
name: @app_name || 'Ruby Console Android Appium',
|
269
|
-
app: absolute_app_path,
|
270
285
|
:'app-package' => @app_package,
|
271
286
|
:'app-activity' => @app_activity,
|
272
287
|
:'app-wait-activity' => @app_wait_activity || @app_activity
|
@@ -281,14 +296,15 @@ module Appium
|
|
281
296
|
platform: 'Mac 10.8',
|
282
297
|
version: '6.0',
|
283
298
|
device: 'iPhone Simulator',
|
284
|
-
name: @app_name || 'Ruby Console iOS Appium'
|
285
|
-
app: absolute_app_path
|
299
|
+
name: @app_name || 'Ruby Console iOS Appium'
|
286
300
|
}
|
287
301
|
end
|
288
302
|
|
289
303
|
# @private
|
290
304
|
def capabilities
|
291
|
-
@
|
305
|
+
caps = @device == :ios ? ios_capabilities : android_capabilities
|
306
|
+
caps[:app] = absolute_app_path unless @app_path.nil? || @app_path.empty?
|
307
|
+
caps
|
292
308
|
end
|
293
309
|
|
294
310
|
# Converts environment variable APP_PATH to an absolute path.
|
@@ -365,7 +381,7 @@ module Appium
|
|
365
381
|
# Set timeout to a large number so that Appium doesn't quit
|
366
382
|
# when no commands are entered after 60 seconds.
|
367
383
|
# broken on selendroid: https://github.com/appium/appium/issues/513
|
368
|
-
mobile :setCommandTimeout, timeout: 9999 unless @selendroid
|
384
|
+
mobile :setCommandTimeout, timeout: 9999 unless @device == :selendroid
|
369
385
|
|
370
386
|
# Set implicit wait by default unless we're using Pry.
|
371
387
|
@driver.manage.timeouts.implicit_wait = @default_wait unless defined? Pry
|
data/lib/appium_lib/ios/patch.rb
CHANGED
@@ -17,10 +17,11 @@ now swipe down until the end of the window - 10 pixels.
|
|
17
17
|
Swiping inside the keyboard will not dismiss it.
|
18
18
|
=end
|
19
19
|
# type
|
20
|
-
execute_script %(au.getElement('#{self.ref}').setValue('#{text}');)
|
20
|
+
$driver.execute_script %(au.getElement('#{self.ref}').setValue('#{text}');)
|
21
21
|
|
22
22
|
# wait for keyboard
|
23
|
-
wait_true { execute_script %(au.mainApp.keyboard().type
|
23
|
+
$driver.wait_true { $driver.execute_script %(au.mainApp.keyboard().type
|
24
|
+
() !== 'UIAElementNil') }
|
24
25
|
|
25
26
|
# dismiss keyboard
|
26
27
|
js = <<-JS
|
@@ -31,7 +32,7 @@ Swiping inside the keyboard will not dismiss it.
|
|
31
32
|
}
|
32
33
|
JS
|
33
34
|
|
34
|
-
execute_script js
|
35
|
+
$driver.execute_script js
|
35
36
|
end
|
36
37
|
end
|
37
38
|
end
|
data/readme.md
CHANGED
@@ -35,11 +35,13 @@ require 'rubygems'
|
|
35
35
|
require 'appium_lib'
|
36
36
|
|
37
37
|
# Start iOS driver
|
38
|
-
app = { app_path: '/path/to/MyiOS.app'}
|
38
|
+
app = { device: :ios, app_path: '/path/to/MyiOS.app'}
|
39
39
|
Appium::Driver.new(app).start_driver
|
40
40
|
|
41
41
|
# Start Android driver
|
42
|
-
apk = {
|
42
|
+
apk = {
|
43
|
+
device: :android
|
44
|
+
app_path: '/path/to/the.apk',
|
43
45
|
app_package: 'com.example.pkg',
|
44
46
|
app_activity: '.act.Start',
|
45
47
|
app_wait_activity: '.act.Start'
|
data/release_notes.md
CHANGED
@@ -1,3 +1,22 @@
|
|
1
|
+
#### v0.5.16 2013-07-26
|
2
|
+
|
3
|
+
- [bd71fb4](https://github.com/appium/ruby_lib/commit/bd71fb4e430608d32923c583c8d4d592f11a96fc) Release 0.5.16
|
4
|
+
- [7b83b85](https://github.com/appium/ruby_lib/commit/7b83b85c41caf25376414d978ff63d49ab22f057) Only return files that exist
|
5
|
+
- [1f0428d](https://github.com/appium/ruby_lib/commit/1f0428dca4e843a82de2d46be3c724e2dc7930c7) Fix keyboard race condition
|
6
|
+
- [c99ed34](https://github.com/appium/ruby_lib/commit/c99ed341c779fb3eff4ab92a95a4a773a1ce212f) Update docs.md
|
7
|
+
- [7103921](https://github.com/appium/ruby_lib/commit/71039210e1e0b7481df59210ce4addebcae7ba08) Fix link
|
8
|
+
- [f76ea9b](https://github.com/appium/ruby_lib/commit/f76ea9b42a728aae247f88f732879cda94101624) Add require support to appium.txt
|
9
|
+
- [12b8e59](https://github.com/appium/ruby_lib/commit/12b8e5938cb616015cb86d62e41ee9d29cace097) Update docs.md
|
10
|
+
- [7d6a8f2](https://github.com/appium/ruby_lib/commit/7d6a8f2fa728e616e7fd459cdeef0d5cce9064b4) Add current_app to docs
|
11
|
+
- [16ea945](https://github.com/appium/ruby_lib/commit/16ea9454941d84bb02ba4950aeea8df6d70cab26) Fix hide keyboard on iOS
|
12
|
+
- [ad9263c](https://github.com/appium/ruby_lib/commit/ad9263cbabb4e1c56bbe9fafe85b048f2a285c11) Add Sauce wait req
|
13
|
+
- [98ee244](https://github.com/appium/ruby_lib/commit/98ee244d460f6251c5c6cff8cc79ca8610cc6165) Add .clear example for textfield
|
14
|
+
- [d373071](https://github.com/appium/ruby_lib/commit/d3730717faba192cc66f5346c2847ecf6cb60e16) Fix activity name example in readme
|
15
|
+
- [50023f3](https://github.com/appium/ruby_lib/commit/50023f3a8201b0875025e5a94ec841fb23c35714) Fix Android version
|
16
|
+
- [c4d281a](https://github.com/appium/ruby_lib/commit/c4d281a62d7923f9e6a65fbc870cb1dc6a959849) Add Android set version code
|
17
|
+
- [5675f4a](https://github.com/appium/ruby_lib/commit/5675f4a03f8b20939e8cc1b5b13df795072d6553) Update readme.md
|
18
|
+
|
19
|
+
|
1
20
|
#### v0.5.15 2013-07-03
|
2
21
|
|
3
22
|
- [734fe68](https://github.com/appium/ruby_lib/commit/734fe6887f36aa1ad59ef7ce992ba2e2f4c8c7d3) Release 0.5.15
|
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: 0.
|
4
|
+
version: 0.6.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: 2013-
|
11
|
+
date: 2013-08-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: selenium-webdriver
|