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.
@@ -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.
@@ -15,6 +15,10 @@ module Appium::Common
15
15
  end
16
16
  end
17
17
 
18
+ def s_texts_names
19
+ find_eles_attr :text, :name
20
+ end
21
+
18
22
  # Get an array of text elements.
19
23
  # @return [Array<Text>]
20
24
  def e_s_texts
@@ -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.11.1' unless defined? ::Appium::VERSION
5
- DATE = '2013-09-24' unless defined? ::Appium::DATE
4
+ VERSION = '0.12.0' unless defined? ::Appium::VERSION
5
+ DATE = '2013-11-07' unless defined? ::Appium::DATE
6
6
  end
@@ -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
- a = @driver.find_element(:tag_name, :alert)
41
- return if a.nil?
42
- b = a.find_elements(:tag_name, :button)
43
- b.last.text if b && b.size >= 1
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
- a = @driver.find_element(:tag_name, :alert)
59
- return if a.nil?
60
- b = a.find_elements(:tag_name, :button)
61
- b.first.text if b && b.size >= 1
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 = ->(one,two) { two.match(/(\d+)x/)[1].to_i <=> one.match(/(\d+)x/)[1].to_i }
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 = 0
155
- get_page source_window window_number || 0
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.11.1
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-09-24 00:00:00.000000000 Z
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.35.1
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.35.1
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.1.0
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.1.0
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.0
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.0
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.0.6
141
+ rubygems_version: 2.1.9
142
142
  signing_key:
143
143
  specification_version: 4
144
144
  summary: Ruby library for Appium