appium_lib 0.11.1 → 0.12.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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