appium_lib 0.11.1 → 0.12.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.
- checksums.yaml +4 -4
- data/appium_lib.gemspec +3 -3
- data/docs/android_docs.md +119 -118
- data/docs/ios_docs.md +122 -121
- data/lib/appium_lib/android/helper.rb +8 -2
- data/lib/appium_lib/common/element/text.rb +4 -0
- data/lib/appium_lib/common/version.rb +2 -2
- data/lib/appium_lib/driver.rb +4 -2
- data/lib/appium_lib/ios/element/alert.rb +42 -10
- data/lib/appium_lib/ios/helper.rb +10 -3
- data/readme.md +13 -0
- data/release_notes.md +6 -0
- metadata +22 -22
@@ -329,6 +329,10 @@ module Appium::Android
|
|
329
329
|
|
330
330
|
keys = node.keys
|
331
331
|
return if keys.empty?
|
332
|
+
if keys == %w(hierarchy)
|
333
|
+
run_internal.call node['hierarchy']
|
334
|
+
return
|
335
|
+
end
|
332
336
|
|
333
337
|
n_content = '@content-desc'
|
334
338
|
n_text = '@text'
|
@@ -336,11 +340,13 @@ module Appium::Android
|
|
336
340
|
n_resource = '@resource-id'
|
337
341
|
n_node = 'node'
|
338
342
|
|
343
|
+
# Store the object if it has a content description, text, or resource id.
|
344
|
+
# If it only has a class, then don't save it.
|
339
345
|
obj = {}
|
340
346
|
obj.merge!( { desc: node[n_content] } ) if keys.include?(n_content) && !node[n_content].empty?
|
341
347
|
obj.merge!( { text: node[n_text] } ) if keys.include?(n_text) && !node[n_text].empty?
|
348
|
+
obj.merge!( { resource_id: node[n_resource] } ) if keys.include?(n_resource) && !node[n_resource].empty?
|
342
349
|
obj.merge!( { class: node[n_class] } ) if keys.include?(n_class) && !obj.empty?
|
343
|
-
obj.merge!( { resource_id: node[n_resource] } ) if keys.include?(n_resource) && !obj.empty?
|
344
350
|
|
345
351
|
r.push obj if !obj.empty?
|
346
352
|
run_internal.call node[n_node] if keys.include?(n_node)
|
@@ -371,7 +377,7 @@ module Appium::Android
|
|
371
377
|
out += " name: #{e_desc}\n" unless e_desc.nil?
|
372
378
|
end
|
373
379
|
|
374
|
-
out += " resource_id: #{e_resource_id}\n" unless e_resource_id.nil?
|
380
|
+
out += " resource_id: #{e_resource_id}\n" unless e_resource_id.nil? || e_resource_id.empty?
|
375
381
|
|
376
382
|
# there may be many ids with the same value.
|
377
383
|
# output all exact matches.
|
@@ -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.12.0' unless defined? ::Appium::VERSION
|
5
|
+
DATE = '2013-11-07' unless defined? ::Appium::DATE
|
6
6
|
end
|
data/lib/appium_lib/driver.rb
CHANGED
@@ -495,15 +495,17 @@ module Appium
|
|
495
495
|
@driver
|
496
496
|
end
|
497
497
|
|
498
|
-
# Set implicit wait to zero.
|
498
|
+
# Set implicit wait and default_wait to zero.
|
499
499
|
def no_wait
|
500
|
+
@default_wait = 0
|
500
501
|
@driver.manage.timeouts.implicit_wait = 0
|
501
502
|
end
|
502
503
|
|
503
|
-
# Set implicit wait to timeout, defaults to 30.
|
504
|
+
# Set implicit wait and default_wait to timeout, defaults to 30.
|
504
505
|
# @param timeout [Integer] the timeout in seconds
|
505
506
|
# @return [void]
|
506
507
|
def set_wait timeout=@default_wait
|
508
|
+
@default_wait = timeout
|
507
509
|
@driver.manage.timeouts.implicit_wait = timeout
|
508
510
|
end
|
509
511
|
|
@@ -34,13 +34,29 @@ module Appium::Ios
|
|
34
34
|
end
|
35
35
|
|
36
36
|
# Get the text of the alert's accept button.
|
37
|
-
# The last button is considered "accept."
|
37
|
+
# The last button is considered "accept." on iOS 6
|
38
|
+
# The first button is considered "accept." on iOS 7
|
38
39
|
# @return [String]
|
39
40
|
def alert_accept_text
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
41
|
+
old_wait = default_wait
|
42
|
+
set_wait 0
|
43
|
+
target_text = ''
|
44
|
+
|
45
|
+
a = ignore { @driver.find_element(:tag_name, :alert) }
|
46
|
+
|
47
|
+
begin
|
48
|
+
if a.nil? # either no alert or on iOS 7
|
49
|
+
b = xpaths 'actionsheet/button'
|
50
|
+
target_text = b.first.text if b && b.size >= 1
|
51
|
+
else # iOS 6 alert found
|
52
|
+
b = a.find_elements(:tag_name, :button)
|
53
|
+
target_text = b.last.text if b && b.size >= 1
|
54
|
+
end
|
55
|
+
rescue
|
56
|
+
ensure
|
57
|
+
set_wait old_wait
|
58
|
+
return target_text
|
59
|
+
end
|
44
60
|
end
|
45
61
|
|
46
62
|
# Dismiss the alert.
|
@@ -52,12 +68,28 @@ module Appium::Ios
|
|
52
68
|
end
|
53
69
|
|
54
70
|
# Get the text of the alert's dismiss button.
|
55
|
-
# The first button is considered "dismiss."
|
71
|
+
# The first button is considered "dismiss." on iOS 6
|
72
|
+
# The last button is considered "dismiss." on iOS 7
|
56
73
|
# @return [String]
|
57
74
|
def alert_dismiss_text
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
75
|
+
old_wait = default_wait
|
76
|
+
set_wait 0
|
77
|
+
target_text = ''
|
78
|
+
|
79
|
+
a = ignore { @driver.find_element(:tag_name, :alert) }
|
80
|
+
|
81
|
+
begin
|
82
|
+
if a.nil? # either no alert or on iOS 7
|
83
|
+
b = xpaths 'actionsheet/button'
|
84
|
+
target_text = b.last.text if b && b.size >= 1
|
85
|
+
else # iOS 6 alert found
|
86
|
+
b = a.find_elements(:tag_name, :button)
|
87
|
+
target_text = b.first.text if b && b.size >= 1
|
88
|
+
end
|
89
|
+
rescue
|
90
|
+
ensure
|
91
|
+
set_wait old_wait
|
92
|
+
return target_text
|
93
|
+
end
|
62
94
|
end
|
63
95
|
end # module Appium::Ios
|
@@ -74,7 +74,7 @@ module Appium::Ios
|
|
74
74
|
r.uniq.each do |ele|
|
75
75
|
res.push "#{r.count(ele)}x #{ele}\n"
|
76
76
|
end
|
77
|
-
count_sort
|
77
|
+
count_sort = ->(one, two) { two.match(/(\d+)x/)[1].to_i <=> one.match(/(\d+)x/)[1].to_i }
|
78
78
|
res.sort(&count_sort).join ''
|
79
79
|
end
|
80
80
|
|
@@ -151,8 +151,15 @@ module Appium::Ios
|
|
151
151
|
|
152
152
|
# Prints a string of interesting elements to the console.
|
153
153
|
# @return [void]
|
154
|
-
def page window_number =
|
155
|
-
|
154
|
+
def page window_number = -1
|
155
|
+
if window_number == -1
|
156
|
+
# if the 0th window has no children, find the next window that does.
|
157
|
+
target_window = source_window 0
|
158
|
+
target_window = source_window 1 if target_window['children'].empty?
|
159
|
+
get_page target_window
|
160
|
+
else
|
161
|
+
get_page source_window window_number || 0
|
162
|
+
end
|
156
163
|
nil
|
157
164
|
end
|
158
165
|
|
data/readme.md
CHANGED
@@ -52,6 +52,19 @@ Appium::Driver.new(apk).start_driver
|
|
52
52
|
Appium.promote_appium_methods Object
|
53
53
|
```
|
54
54
|
|
55
|
+
```ruby
|
56
|
+
# Example of automating Settings preinstalled app on Android
|
57
|
+
# Find these values using arc then type current_app
|
58
|
+
apk = {
|
59
|
+
device: :android
|
60
|
+
app_path: '',
|
61
|
+
app_package: 'com.android.settings',
|
62
|
+
app_activity: '.Settings',
|
63
|
+
app_wait_activity: '.Settings'
|
64
|
+
}
|
65
|
+
Appium::Driver.new(apk).start_driver
|
66
|
+
```
|
67
|
+
|
55
68
|
#### iOS env vars
|
56
69
|
|
57
70
|
- `APP_PATH` Path to the .app folder
|
data/release_notes.md
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
#### v0.11.1 2013-09-24
|
2
|
+
|
3
|
+
- [0551d9a](https://github.com/appium/ruby_lib/commit/0551d9a4de2cb3d62efe63a87b01c15526202336) Release 0.11.1
|
4
|
+
- [283040e](https://github.com/appium/ruby_lib/commit/283040e7227b7838124e835578d549fadc101cdc) Fix s_texts method overloading
|
5
|
+
|
6
|
+
|
1
7
|
#### v0.11.0 2013-09-24
|
2
8
|
|
3
9
|
- [948074c](https://github.com/appium/ruby_lib/commit/948074c44917029fb27b08ed582c90d7f73a7cde) Release 0.11.0
|
metadata
CHANGED
@@ -1,83 +1,83 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: appium_lib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.12.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-11-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: selenium-webdriver
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 2.
|
19
|
+
version: 2.37.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 2.
|
26
|
+
version: 2.37.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: awesome_print
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 1.
|
33
|
+
version: 1.2.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 1.
|
40
|
+
version: 1.2.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: json
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - ~>
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 1.8.
|
47
|
+
version: 1.8.1
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - ~>
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 1.8.
|
54
|
+
version: 1.8.1
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: toml
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - ~>
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: 0.0.4
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - ~>
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 0.0.4
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rake
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - ~>
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: 10.0.4
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - ~>
|
80
|
+
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: 10.0.4
|
83
83
|
description: Ruby library for Appium.
|
@@ -87,7 +87,7 @@ executables: []
|
|
87
87
|
extensions: []
|
88
88
|
extra_rdoc_files: []
|
89
89
|
files:
|
90
|
-
- .gitignore
|
90
|
+
- ".gitignore"
|
91
91
|
- Gemfile
|
92
92
|
- LICENSE-2.0.txt
|
93
93
|
- Rakefile
|
@@ -128,17 +128,17 @@ require_paths:
|
|
128
128
|
- lib
|
129
129
|
required_ruby_version: !ruby/object:Gem::Requirement
|
130
130
|
requirements:
|
131
|
-
- -
|
131
|
+
- - ">="
|
132
132
|
- !ruby/object:Gem::Version
|
133
133
|
version: 1.9.3
|
134
134
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
|
-
- -
|
136
|
+
- - ">="
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0'
|
139
139
|
requirements: []
|
140
140
|
rubyforge_project:
|
141
|
-
rubygems_version: 2.
|
141
|
+
rubygems_version: 2.1.9
|
142
142
|
signing_key:
|
143
143
|
specification_version: 4
|
144
144
|
summary: Ruby library for Appium
|