appium_lib 9.1.1 → 9.1.2
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/.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
|