appium_lib 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,4 +1,24 @@
1
1
  # encoding: utf-8
2
+
3
+ # Add status to WebDriver
4
+ # https://code.google.com/p/selenium/issues/detail?id=5669
5
+ class Selenium::WebDriver::Driver
6
+ def status
7
+ bridge.status
8
+ end
9
+ end
10
+
11
+ class Selenium::WebDriver::Remote::Bridge
12
+ def status
13
+ raw_execute :status
14
+ end
15
+ end
16
+
17
+ class Selenium::WebDriver::Remote::Bridge
18
+ command :status, :get, 'status'
19
+ end
20
+ # end Add status to WebDriver
21
+
2
22
  module Appium::Common
3
23
  # Implement useful features for element.
4
24
  class Selenium::WebDriver::Element
@@ -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.4.0' unless defined? ::Appium::VERSION
5
- DATE = '2013-05-16' unless defined? ::Appium::DATE
4
+ VERSION = '0.4.1' unless defined? ::Appium::VERSION
5
+ DATE = '2013-05-20' unless defined? ::Appium::DATE
6
6
  end
@@ -149,6 +149,17 @@ module Appium
149
149
  self # return newly created driver
150
150
  end # def initialize
151
151
 
152
+ # Returns the status payload
153
+ def status
154
+ driver.status.payload
155
+ end
156
+
157
+ # Returns the server's version string
158
+ # @return [String]
159
+ def server_version
160
+ status['value']['build']['version']
161
+ end
162
+
152
163
  # @private
153
164
  # WebDriver capabilities. Must be valid for Sauce to work.
154
165
  # https://github.com/jlipps/appium/blob/master/app/android.js
@@ -41,52 +41,8 @@ module Appium::Ios
41
41
  # @param predicate [String] the predicate
42
42
  # @return [String] the completed JavaScript program
43
43
  def first_ele_js predicate
44
- <<-JS
45
- function isNil( a ) {
46
- return a.type() === 'UIAElementNil';
47
- }
48
-
49
- function search( w ) {
50
- var search = "#{predicate}";
51
- var a = w.secureTextFields().firstWithPredicate(search);
52
- if ( isNil(a) ) {
53
- a = w.textFields().firstWithPredicate(search);
54
- if ( isNil(a) ) {
55
- a = w.buttons().firstWithPredicate(search);
56
- if ( isNil(a) ) {
57
- a = w.elements().firstWithPredicate(search);
58
- }
59
- }
60
- }
61
-
62
- return a;
63
- }
64
-
65
- function search_web( windowIndex ) {
66
- var a = undefined;
67
-
68
- try {
69
- a = UIATarget.localTarget().frontMostApp().windows()[windowIndex].scrollViews()[0].webViews()[0].elements().firstWithPredicate("#{predicate}");
70
- } catch(e) {}
71
-
72
- return a;
73
- }
74
-
75
- function run() {
76
- var windows = au.mainApp.windows();
77
- for (var i = 0, len = windows.length; i < len; i++) {
78
- var result = search_web( i );
79
- if ( isNil( result ) ) {
80
- result = search( windows[ i ] );
81
- }
82
- if ( ! isNil( result ) ) {
83
- return au._returnElems( $( [ result ] ) );
84
- }
85
- }
86
- return au._returnElems( $( [] ) );
87
- }
88
-
89
- run();
44
+ (<<-JS).strip # remove trailing newline
45
+ au.mainApp.getFirstWithPredicateWeighted("#{predicate}");
90
46
  JS
91
47
  end
92
48
 
@@ -94,16 +50,8 @@ module Appium::Ios
94
50
  # @param predicate [String] the predicate
95
51
  # @return [String] the completed JavaScript program
96
52
  def all_ele_js predicate
97
- <<-JS
98
- var w = au.mainWindow;
99
- var search = "#{predicate}";
100
- var a = w.elements().withPredicate(search).toArray();
101
-
102
- if ( a.length === 0 ) {
103
- a = [];
104
- }
105
-
106
- au._returnElems($(a));
53
+ (<<-JS).strip # remove trailing newline
54
+ au.mainApp.getAllWithPredicate("#{predicate}");
107
55
  JS
108
56
  end
109
57
 
@@ -112,10 +60,7 @@ module Appium::Ios
112
60
  # @return [Element] the first matching element
113
61
  def find text
114
62
  js = first_ele_js "name contains[c] '#{text}' || label contains[c] '#{text}' || value contains[c] '#{text}'"
115
-
116
- ele = execute_script(js).first
117
- raise Selenium::WebDriver::Error::NoSuchElementError, '' if ele.nil?
118
- ele
63
+ execute_script js
119
64
  end
120
65
 
121
66
  # Return all elements matching text.
@@ -125,7 +70,6 @@ module Appium::Ios
125
70
  # returnElems requires a wrapped $(element).
126
71
  # must call toArray when using withPredicate instead of firstWithPredicate.
127
72
  js = all_ele_js "name contains[c] '#{text}' || label contains[c] '#{text}' || value contains[c] '#{text}'"
128
-
129
73
  execute_script js
130
74
  end
131
75
 
@@ -134,8 +78,7 @@ module Appium::Ios
134
78
  # @return [Element] the first matching element
135
79
  def text text
136
80
  js = first_ele_js "value contains[c] '#{text}'"
137
-
138
- execute_script(js).first
81
+ execute_script js
139
82
  end
140
83
 
141
84
  # Return all elements matching text.
@@ -144,8 +87,7 @@ module Appium::Ios
144
87
  def texts text
145
88
  # XPath //* is not implemented on iOS
146
89
  # https://github.com/appium/appium/issues/430
147
- js = all_ele_js "value contains[c] '#{text}'"
148
-
90
+ js = all_ele_js "value contains[c] '#{text}'"
149
91
  execute_script js
150
92
  end
151
93
 
@@ -164,11 +106,9 @@ module Appium::Ios
164
106
  # @param name [String] the name to search for
165
107
  # @return [Array<Element>] all matching elements
166
108
  def names name
167
- # find_elements :name is not the same as on Android.
168
- # it's case sensitive and exact on iOS and not on Android.
109
+ # :name is not consistent across iOS and Android so use custom JavaScript
169
110
  # https://github.com/appium/appium/issues/379
170
- js = all_ele_js "name contains[c] '#{name}' || label contains[c] '#{name}''"
171
-
111
+ js = all_ele_js "name contains[c] '#{name}' || label contains[c] '#{name}'"
172
112
  execute_script js
173
113
  end
174
114
  end # module Appium::Ios
@@ -1,3 +1,19 @@
1
+ #### v0.4.0 2013-05-16
2
+
3
+ - [70a59fe](https://github.com/appium/ruby_lib/commit/70a59fefcaa4f16ba0e7629f16feaae3e5f8c424) Release 0.4.0
4
+ - [b30548e](https://github.com/appium/ruby_lib/commit/b30548e58783bc6b20bd5c0f11e2ae9ddb5faa30) Translate mobile find on Android
5
+ - [1ea8b85](https://github.com/appium/ruby_lib/commit/1ea8b85ebb7c7531c2791f3c41d0280d947edad0) Screenshot should work on iOS
6
+ - [3797644](https://github.com/appium/ruby_lib/commit/3797644874ff1e56a8c35f9825e42c8486902984) Update docs
7
+ - [0e2c119](https://github.com/appium/ruby_lib/commit/0e2c119199535a2e9a8e708453fa068c6445e6ca) Fix release notes
8
+ - [5c28a2d](https://github.com/appium/ruby_lib/commit/5c28a2debcd8386aab62b48d0b087ed7dac84d8d) Next release will be 0.4.0
9
+ - [b9e5044](https://github.com/appium/ruby_lib/commit/b9e5044ddf6f998c09f006d8a6d95a5560f2fdd3) Remove comment
10
+ - [30c2ada](https://github.com/appium/ruby_lib/commit/30c2adaecb0bca734664192a805968a83f4b7a8b) Update doc links
11
+ - [d08cd59](https://github.com/appium/ruby_lib/commit/d08cd5944aeda9fa3f3842fd5a259e0385b88166) Add JS doc gen
12
+ - [61530fb](https://github.com/appium/ruby_lib/commit/61530fb908822cd32be6cb25d94ffb00f68ec87b) Update docs
13
+ - [ebe6a2f](https://github.com/appium/ruby_lib/commit/ebe6a2fa91a748c0c823dbb969afa51ab3710acd) Update docs.md
14
+ - [637fef7](https://github.com/appium/ruby_lib/commit/637fef7f7547e6e2b2fd8f70e19ef3f3870cc136) Use element.displayed? not visible
15
+
16
+
1
17
  #### v0.3.16 2013-05-14
2
18
 
3
19
  - [fb34a03](https://github.com/appium/ruby_lib/commit/fb34a03ceec0be552f218323bf266fda7f7e060b) Release 0.3.16
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.0
4
+ version: 0.4.1
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-05-16 00:00:00.000000000 Z
11
+ date: 2013-05-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: selenium-webdriver