appium_lib 9.1.1 → 9.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +0 -7
- data/android_tests/lib/android/specs/android/element/text.rb +2 -2
- data/android_tests/lib/android/specs/android/element/textfield.rb +12 -2
- data/android_tests/lib/android/specs/common/element/window.rb +2 -0
- data/android_tests/lib/android/specs/driver.rb +6 -0
- data/docs/android_docs.md +231 -213
- data/docs/ios_docs.md +240 -222
- data/ios_tests/lib/ios/specs/common/element/window.rb +2 -0
- data/ios_tests/lib/ios/specs/driver.rb +6 -0
- data/ios_tests/lib/ios/specs/ios/element/generic.rb +3 -1
- data/ios_tests/lib/ios/specs/ios/element/textfield.rb +18 -2
- data/lib/appium_lib/common/helper.rb +3 -3
- data/lib/appium_lib/common/version.rb +2 -2
- data/lib/appium_lib/common/wait.rb +5 -5
- data/lib/appium_lib/device/device.rb +11 -3
- data/lib/appium_lib/device/touch_actions.rb +1 -2
- data/lib/appium_lib/driver.rb +15 -2
- data/lib/appium_lib/ios/helper.rb +3 -29
- data/release_notes.md +21 -0
- metadata +2 -2
@@ -1,3 +1,4 @@
|
|
1
|
+
# rake ios[common/element/window]
|
1
2
|
describe 'common/element/window' do
|
2
3
|
def before_first
|
3
4
|
screen.must_equal catalog
|
@@ -7,6 +8,7 @@ describe 'common/element/window' do
|
|
7
8
|
before_first
|
8
9
|
end
|
9
10
|
|
11
|
+
# rubocop:disable Lint/UnifiedInteger
|
10
12
|
t 'window_size' do
|
11
13
|
size = window_size
|
12
14
|
size.width.class.must_equal Fixnum
|
@@ -159,6 +159,12 @@ describe 'driver' do
|
|
159
159
|
end
|
160
160
|
end
|
161
161
|
|
162
|
+
t 'client_version' do
|
163
|
+
client_version = appium_client_version
|
164
|
+
expected = { version: ::Appium::VERSION }
|
165
|
+
client_version.must_equal expected
|
166
|
+
end
|
167
|
+
|
162
168
|
t 'restart' do
|
163
169
|
restart
|
164
170
|
text 'buttons'
|
@@ -83,8 +83,8 @@ describe 'ios/element/textfield' do
|
|
83
83
|
end
|
84
84
|
end
|
85
85
|
|
86
|
-
def must_raise_no_element
|
87
|
-
proc {
|
86
|
+
def must_raise_no_element
|
87
|
+
proc { yield }.must_raise Selenium::WebDriver::Error::NoSuchElementError
|
88
88
|
end
|
89
89
|
|
90
90
|
t 'hide_keyboard' do
|
@@ -124,6 +124,22 @@ describe 'ios/element/textfield' do
|
|
124
124
|
textfields_exact('does not exist').length.must_equal 0
|
125
125
|
end
|
126
126
|
|
127
|
+
t 'set_immediate_value' do
|
128
|
+
go_to_textfields
|
129
|
+
|
130
|
+
message = 'hello'
|
131
|
+
|
132
|
+
element = textfield(1)
|
133
|
+
element.click
|
134
|
+
element.clear
|
135
|
+
|
136
|
+
set_immediate_value(element, message)
|
137
|
+
element.text.must_equal message
|
138
|
+
|
139
|
+
set_wait 10
|
140
|
+
leave_textfields
|
141
|
+
end
|
142
|
+
|
127
143
|
t 'after_last' do
|
128
144
|
after_last
|
129
145
|
end
|
@@ -20,9 +20,9 @@ module Appium
|
|
20
20
|
#
|
21
21
|
# find_element :text doesn't work so use XPath to find by text.
|
22
22
|
|
23
|
-
# Return
|
24
|
-
def ignore
|
25
|
-
|
23
|
+
# Return yield and ignore any exceptions.
|
24
|
+
def ignore
|
25
|
+
yield
|
26
26
|
rescue Exception # rubocop:disable Lint/HandleExceptions, Lint/RescueException
|
27
27
|
end
|
28
28
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module Appium
|
2
2
|
# Version and Date are defined on the 'Appium' module, not 'Appium::Common'
|
3
|
-
VERSION = '9.1.
|
4
|
-
DATE = '2016-12-
|
3
|
+
VERSION = '9.1.2'.freeze unless defined? ::Appium::VERSION
|
4
|
+
DATE = '2016-12-25'.freeze unless defined? ::Appium::DATE
|
5
5
|
end
|
@@ -6,7 +6,7 @@ module Appium
|
|
6
6
|
|
7
7
|
# Wait code from the selenium Ruby gem
|
8
8
|
# https://github.com/SeleniumHQ/selenium/blob/cf501dda3f0ed12233de51ce8170c0e8090f0c20/rb/lib/selenium/webdriver/common/wait.rb
|
9
|
-
def _generic_wait(opts = {}
|
9
|
+
def _generic_wait(opts = {})
|
10
10
|
valid_keys = [:timeout, :interval, :message, :ignore, :return_if_true]
|
11
11
|
invalid_keys = []
|
12
12
|
opts.keys.each { |key| invalid_keys << key unless valid_keys.include?(key) }
|
@@ -24,9 +24,9 @@ module Appium
|
|
24
24
|
|
25
25
|
until Time.now > end_time
|
26
26
|
begin
|
27
|
-
return
|
27
|
+
return yield unless return_if_true
|
28
28
|
|
29
|
-
result =
|
29
|
+
result = yield
|
30
30
|
return result if result
|
31
31
|
rescue ::Errno::ECONNREFUSED => e
|
32
32
|
raise e
|
@@ -51,7 +51,7 @@ module Appium
|
|
51
51
|
opts
|
52
52
|
end
|
53
53
|
|
54
|
-
# Check every interval seconds to see if
|
54
|
+
# Check every interval seconds to see if yield returns a truthy value.
|
55
55
|
# Note this isn't a strict boolean true, any truthy value is accepted.
|
56
56
|
# false and nil are considered failures.
|
57
57
|
# Give up after timeout seconds.
|
@@ -71,7 +71,7 @@ module Appium
|
|
71
71
|
_generic_wait opts, &block
|
72
72
|
end
|
73
73
|
|
74
|
-
# Check every interval seconds to see if
|
74
|
+
# Check every interval seconds to see if yield doesn't raise an exception.
|
75
75
|
# Give up after timeout seconds.
|
76
76
|
#
|
77
77
|
# Wait code from the selenium Ruby gem
|
@@ -220,10 +220,18 @@ module Appium
|
|
220
220
|
end
|
221
221
|
end
|
222
222
|
|
223
|
-
#
|
223
|
+
# @!method set_immediate_value
|
224
|
+
# Set the value to element directly
|
225
|
+
# for iOS; setValue is called in XCUITest instead because XCUITest doesn't provide set value directly.
|
226
|
+
# https://github.com/appium/appium-xcuitest-driver/blob/793cdc7d5e84bd553e375076e1c6dc7e242c9cde/lib/commands/element.js#L123
|
227
|
+
#
|
228
|
+
# ```ruby
|
229
|
+
# set_immediate_value element, 'hello'
|
230
|
+
# ```
|
224
231
|
add_endpoint_method(:set_immediate_value) do
|
225
|
-
def set_immediate_value(element, value)
|
226
|
-
|
232
|
+
def set_immediate_value(element, *value)
|
233
|
+
keys = ::Selenium::WebDriver::Keys.encode(value)
|
234
|
+
execute :set_immediate_value, { id: element.ref }, value: Array(keys)
|
227
235
|
end
|
228
236
|
end
|
229
237
|
|
@@ -147,13 +147,12 @@ module Appium
|
|
147
147
|
if ele # pinch/zoom for XCUITest
|
148
148
|
press x: start_x, y: start_y, element: ele
|
149
149
|
move_to x: start_x + delta_x, y: start_y + delta_y, element: ele
|
150
|
-
release
|
151
150
|
else
|
152
151
|
press x: start_x, y: start_y
|
153
152
|
wait(duration) if duration
|
154
153
|
move_to x: start_x + delta_x, y: start_y + delta_y
|
155
|
-
release
|
156
154
|
end
|
155
|
+
release
|
157
156
|
|
158
157
|
self
|
159
158
|
end
|
data/lib/appium_lib/driver.rb
CHANGED
@@ -453,6 +453,19 @@ module Appium
|
|
453
453
|
driver.remote_status
|
454
454
|
end
|
455
455
|
|
456
|
+
# Returns the client's version info
|
457
|
+
#
|
458
|
+
# ```ruby
|
459
|
+
# {
|
460
|
+
# "version" => "9.1.1"
|
461
|
+
# }
|
462
|
+
# ```
|
463
|
+
#
|
464
|
+
# @return [Hash]
|
465
|
+
def appium_client_version
|
466
|
+
{ version: ::Appium::VERSION }
|
467
|
+
end
|
468
|
+
|
456
469
|
# Converts app_path to an absolute path.
|
457
470
|
#
|
458
471
|
# opts is the full options hash (caps and appium_lib). If server_url is set
|
@@ -616,7 +629,7 @@ module Appium
|
|
616
629
|
# wait to after checking existance
|
617
630
|
# @param search_block [Block] the block to call
|
618
631
|
# @return [Boolean]
|
619
|
-
def exists(pre_check = 0, post_check = @default_wait
|
632
|
+
def exists(pre_check = 0, post_check = @default_wait)
|
620
633
|
# do not uset set_wait here.
|
621
634
|
# it will cause problems with other methods reading the default_wait of 0
|
622
635
|
# which then gets converted to a 1 second wait.
|
@@ -625,7 +638,7 @@ module Appium
|
|
625
638
|
exists = true
|
626
639
|
|
627
640
|
begin
|
628
|
-
|
641
|
+
yield # search for element
|
629
642
|
rescue
|
630
643
|
exists = false # error means it's not there
|
631
644
|
end
|
@@ -16,24 +16,21 @@ module Appium
|
|
16
16
|
if name == label && name == value
|
17
17
|
puts type.to_s if name || label || value || hint
|
18
18
|
puts " name, label, value: #{name}" if name
|
19
|
-
puts " hint: #{hint}" if hint
|
20
19
|
elsif name == label
|
21
20
|
puts type.to_s if name || label || value || hint
|
22
21
|
puts " name, label: #{name}" if name
|
23
22
|
puts " value: #{value}" if value
|
24
|
-
puts " hint: #{hint}" if hint
|
25
23
|
elsif name == value
|
26
24
|
puts type.to_s if name || label || value || hint
|
27
25
|
puts " name, value: #{name}" if name
|
28
26
|
puts " label: #{label}" if label
|
29
|
-
puts " hint: #{hint}" if hint
|
30
27
|
else
|
31
28
|
puts type.to_s if name || label || value || hint
|
32
29
|
puts " name: #{name}" if name
|
33
30
|
puts " label: #{label}" if label
|
34
31
|
puts " value: #{value}" if value
|
35
|
-
puts " hint: #{hint}" if hint
|
36
32
|
end
|
33
|
+
puts " hint: #{hint}" if hint
|
37
34
|
end
|
38
35
|
end
|
39
36
|
# iOS only. On Android uiautomator always returns an empty string for EditText password.
|
@@ -87,34 +84,11 @@ module Appium
|
|
87
84
|
visible = fix_space element['visible']
|
88
85
|
type = fix_space element['type']
|
89
86
|
|
90
|
-
# TODO: Rubocop warning cleanup
|
91
|
-
# rubocop:disable Metrics/BlockNesting
|
92
|
-
|
93
87
|
# if class_name is set, mark non-matches as invisible
|
94
88
|
visible = (type.downcase.include? class_namet).to_s if class_name
|
95
89
|
if visible && visible == 'true'
|
96
|
-
|
97
|
-
|
98
|
-
puts " name, label, value: #{name}" if name
|
99
|
-
puts " hint: #{hint}" if hint
|
100
|
-
elsif name == label
|
101
|
-
puts type.to_s if name || label || value || hint
|
102
|
-
puts " name, label: #{name}" if name
|
103
|
-
puts " value: #{value}" if value
|
104
|
-
puts " hint: #{hint}" if hint
|
105
|
-
elsif name == value
|
106
|
-
puts type.to_s if name || label || value || hint
|
107
|
-
puts " name, value: #{name}" if name
|
108
|
-
puts " label: #{label}" if label
|
109
|
-
puts " hint: #{hint}" if hint
|
110
|
-
else
|
111
|
-
puts type.to_s if name || label || value || hint
|
112
|
-
puts " name: #{name}" if name
|
113
|
-
puts " label: #{label}" if label
|
114
|
-
puts " value: #{value}" if value
|
115
|
-
puts " hint: #{hint}" if hint
|
116
|
-
end
|
117
|
-
# rubocop:enable Metrics/BlockNesting
|
90
|
+
|
91
|
+
_print_attr(type, name, label, value, hint)
|
118
92
|
|
119
93
|
# there may be many ids with the same value.
|
120
94
|
# output all exact matches.
|
data/release_notes.md
CHANGED
@@ -1,3 +1,24 @@
|
|
1
|
+
#### v9.1.2 2016-12-25
|
2
|
+
|
3
|
+
- [22401b0](https://github.com/appium/ruby_lib/commit/22401b065f2317e82d37b5188ad9c18c701b0a41) Release 9.1.2
|
4
|
+
- [ab3ba8e](https://github.com/appium/ruby_lib/commit/ab3ba8e0fd9e6867b63c5cd0a3f929aca8fc236b) Fix set immediate value (#432)
|
5
|
+
- [75acc43](https://github.com/appium/ruby_lib/commit/75acc4313fffca87c3c9c54214175a9981c0d540) disable lint unified integer (#431)
|
6
|
+
- [baf5f3c](https://github.com/appium/ruby_lib/commit/baf5f3c7bc3cf51b5f38878f40d88563546dfc10) update tests for finds_exact (#429)
|
7
|
+
- [42df79b](https://github.com/appium/ruby_lib/commit/42df79b4cd0b5a36f52628f0acdeb688c5170c0c) fix identicalConditionalBranches (#428)
|
8
|
+
- [2a91a6d](https://github.com/appium/ruby_lib/commit/2a91a6dcd50097101e212b1ed9fc64a470dd95da) add appium_client_version (#421)
|
9
|
+
- [7c39087](https://github.com/appium/ruby_lib/commit/7c39087676071a4cf27d97fc309e13e968dfb21c) fix rubocop associated with block call (#422)
|
10
|
+
- [1979cd8](https://github.com/appium/ruby_lib/commit/1979cd824947d1182fb99ff0f00dbfff165c0aab) Release 9 1 1 (#427)
|
11
|
+
- [c016ba3](https://github.com/appium/ruby_lib/commit/c016ba3f9d265ca8b851ec8ed85670ee50b4215b) Release 9.1.1
|
12
|
+
|
13
|
+
|
14
|
+
#### v9.1.1 2016-12-19
|
15
|
+
|
16
|
+
- [c016ba3](https://github.com/appium/ruby_lib/commit/c016ba3f9d265ca8b851ec8ed85670ee50b4215b) Release 9.1.1
|
17
|
+
- [125f144](https://github.com/appium/ruby_lib/commit/125f144481f0b01ab7014ca83968924e7bf827ba) bugfix for finding an array of exact elements in ios (#424)
|
18
|
+
- [586205a](https://github.com/appium/ruby_lib/commit/586205ab9d6ce0c286a6036616a7755b74f6a1ba) Release 9 1 0 (#419)
|
19
|
+
- [ba9ec64](https://github.com/appium/ruby_lib/commit/ba9ec64031f242b3065674b1e4f8b236b391f9fa) Release 9.1.0
|
20
|
+
|
21
|
+
|
1
22
|
#### v9.1.0 2016-12-18
|
2
23
|
|
3
24
|
- [ba9ec64](https://github.com/appium/ruby_lib/commit/ba9ec64031f242b3065674b1e4f8b236b391f9fa) Release 9.1.0
|
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: 9.1.
|
4
|
+
version: 9.1.2
|
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: 2016-12-
|
11
|
+
date: 2016-12-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: selenium-webdriver
|