appium_lib_core 1.6.0 → 1.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +2 -2
  3. data/CHANGELOG.md +16 -0
  4. data/lib/appium_lib_core/android/device.rb +301 -406
  5. data/lib/appium_lib_core/android/device/clipboard.rb +42 -0
  6. data/lib/appium_lib_core/android/device/emulator.rb +149 -147
  7. data/lib/appium_lib_core/android/device/network.rb +47 -0
  8. data/lib/appium_lib_core/android/device/performance.rb +24 -0
  9. data/lib/appium_lib_core/android/device/screen.rb +39 -0
  10. data/lib/appium_lib_core/android/espresso/bridge.rb +1 -1
  11. data/lib/appium_lib_core/android/uiautomator1/bridge.rb +1 -1
  12. data/lib/appium_lib_core/android/uiautomator2/bridge.rb +1 -1
  13. data/lib/appium_lib_core/android/uiautomator2/device.rb +3 -14
  14. data/lib/appium_lib_core/android/uiautomator2/device/battery.rb +28 -0
  15. data/lib/appium_lib_core/common/base/http_default.rb +5 -1
  16. data/lib/appium_lib_core/device.rb +50 -370
  17. data/lib/appium_lib_core/device/app_management.rb +113 -0
  18. data/lib/appium_lib_core/device/app_state.rb +18 -1
  19. data/lib/appium_lib_core/device/context.rb +48 -0
  20. data/lib/appium_lib_core/device/device_lock.rb +28 -0
  21. data/lib/appium_lib_core/device/file_management.rb +32 -0
  22. data/lib/appium_lib_core/device/image_comparison.rb +1 -3
  23. data/lib/appium_lib_core/device/ime_actions.rb +43 -0
  24. data/lib/appium_lib_core/device/keyboard.rb +26 -0
  25. data/lib/appium_lib_core/device/keyevent.rb +44 -0
  26. data/lib/appium_lib_core/device/screen_record.rb +21 -0
  27. data/lib/appium_lib_core/device/setting.rb +21 -0
  28. data/lib/appium_lib_core/device/touch_actions.rb +22 -0
  29. data/lib/appium_lib_core/device/value.rb +23 -0
  30. data/lib/appium_lib_core/driver.rb +8 -0
  31. data/lib/appium_lib_core/ios/device.rb +70 -101
  32. data/lib/appium_lib_core/ios/device/clipboard.rb +41 -0
  33. data/lib/appium_lib_core/ios/uiautomation/bridge.rb +1 -1
  34. data/lib/appium_lib_core/ios/xcuitest/bridge.rb +2 -2
  35. data/lib/appium_lib_core/ios/xcuitest/device.rb +166 -227
  36. data/lib/appium_lib_core/ios/xcuitest/device/battery.rb +28 -0
  37. data/lib/appium_lib_core/ios/xcuitest/device/performance.rb +40 -0
  38. data/lib/appium_lib_core/ios/xcuitest/device/screen.rb +30 -0
  39. data/lib/appium_lib_core/version.rb +2 -2
  40. data/release_notes.md +12 -0
  41. metadata +21 -2
@@ -0,0 +1,42 @@
1
+ require 'base64'
2
+
3
+ module Appium
4
+ module Core
5
+ module Android
6
+ module Device
7
+ module Clipboard
8
+ def self.add_methods
9
+ ::Appium::Core::Device.add_endpoint_method(:get_clipboard) do
10
+ def get_clipboard(content_type: :plaintext)
11
+ unless ::Appium::Core::Device::Clipboard::CONTENT_TYPE.member?(content_type)
12
+ raise "content_type should be #{::Appium::Core::Device::Clipboard::CONTENT_TYPE}"
13
+ end
14
+
15
+ params = { contentType: content_type }
16
+
17
+ data = execute(:get_clipboard, {}, params)
18
+ Base64.decode64 data
19
+ end
20
+ end
21
+
22
+ ::Appium::Core::Device.add_endpoint_method(:set_clipboard) do
23
+ def set_clipboard(content:, content_type: :plaintext, label: nil)
24
+ unless ::Appium::Core::Device::Clipboard::CONTENT_TYPE.member?(content_type)
25
+ raise "content_type should be #{::Appium::Core::Device::Clipboard::CONTENT_TYPE}"
26
+ end
27
+
28
+ params = {
29
+ contentType: content_type,
30
+ content: Base64.encode64(content)
31
+ }
32
+ params[:label] = label unless label.nil?
33
+
34
+ execute(:set_clipboard, {}, params)
35
+ end
36
+ end
37
+ end
38
+ end # module Clipboard
39
+ end # module Device
40
+ end # module Android
41
+ end # module Core
42
+ end # module Appium
@@ -1,168 +1,170 @@
1
1
  module Appium
2
- module Android
3
- module Device
4
- module Emulator
5
- GSM_CALL_ACTIONS = [:call, :accept, :cancel, :hold].freeze
6
-
7
- GSM_VOICE_STATES = [:on, :off, :denied, :searching, :roaming, :home, :unregistered].freeze
8
-
9
- GSM_SIGNALS = { none_or_unknown: 0, poor: 1, moderate: 2, good: 3, great: 4 }.freeze
10
-
11
- # :gsm // GSM/CSD (up: 14.4, down: 14.4).
12
- # :scsd // HSCSD (up: 14.4, down: 57.6).
13
- # :gprs // GPRS (up: 28.8, down: 57.6).
14
- # :edge // EDGE/EGPRS (up: 473.6, down: 473.6).
15
- # :umts // UMTS/3G (up: 384.0, down: 384.0).
16
- # :hsdpa // HSDPA (up: 5760.0, down: 13,980.0).
17
- # :lte // LTE (up: 58,000, down: 173,000).
18
- # :evdo // EVDO (up: 75,000, down: 280,000).
19
- # :full // No limit, the default (up: 0.0, down: 0.0).
20
- NET_SPEED = [:gsm, :scsd, :gprs, :edge, :umts, :hsdpa, :lte, :evdo, :full].freeze
21
-
22
- POWER_AC_STATE = [:on, :off].freeze
23
-
24
- # @!method send_sms(phone_number:, message:)
25
- # Emulate send SMS event on the connected emulator.
26
- #
27
- # @param [String] phone_number: The phone number of message sender
28
- # @param [String] message: The message to send
29
- #
30
- # @example
31
- #
32
- # @driver.send_sms phone_number: '00000000000', message: 'test message'
33
- #
34
-
35
- # @!method gsm_call(phone_number:, action:)
36
- # Emulate GSM call event on the connected emulator.
37
- #
38
- # @param [String] phone_number: The phone number of message sender
39
- # @param [Hash] action: One of available GSM call actions. Available action is GSM_CALL_ACTION.
40
- #
41
- # @example
42
- #
43
- # @driver.gsm_call phone_number: '00000000000', action: :call
44
- #
45
-
46
- # @!method gsm_signal(signal_strength)
47
- # Emulate GSM signal strength change event on the connected emulator.
48
- #
49
- # @param [Hash] signal_strength One of available GSM signal strength. Available action is GSM_SIGNAL.
50
- #
51
- # @example
52
- #
53
- # @driver.gsm_signal :good
54
- #
55
-
56
- # @!method gsm_voice(state)
57
- # Emulate GSM voice event on the connected emulator.
58
- #
59
- # @param [Hash] state One of available GSM voice state. Available action is GSM_VOICE_STATE.
60
- #
61
- # @example
62
- #
63
- # @driver.gsm_voice :on
64
- #
65
-
66
- # @!method set_network_speed(netspeed)
67
- # Emulate network speed change event on the connected emulator.
68
- #
69
- # @param [Hash] netspeed One of available Network Speed values. Available action is NET_SPEED.
70
- #
71
- # @example
72
- #
73
- # @driver.set_network_speed :gsm
74
- #
75
-
76
- # @!method set_power_capacity(percent)
77
- # Emulate power capacity change on the connected emulator.
78
- #
79
- # @param [Integer] percent Percentage value in range [0, 100].
80
- #
81
- # @example
82
- #
83
- # @driver.set_power_capacity 10
84
- #
85
-
86
- # @!method set_power_ac(state)
87
- # Emulate power state change on the connected emulator.
88
- #
89
- # @param [Hash] state One of available power AC state. Available action is POWER_AC_STATE.
90
- #
91
- # @example
92
- #
93
- # @driver.set_power_ac :on
94
- #
95
-
96
- ####
97
- ## self.emulator_commands
98
- ####
99
-
100
- def self.emulator_commands
101
- Appium::Core::Device.add_endpoint_method(:send_sms) do
102
- def send_sms(phone_number:, message:)
103
- execute(:send_sms, {}, { phoneNumber: phone_number, message: message })
2
+ module Core
3
+ module Android
4
+ module Device
5
+ module Emulator
6
+ GSM_CALL_ACTIONS = [:call, :accept, :cancel, :hold].freeze
7
+
8
+ GSM_VOICE_STATES = [:on, :off, :denied, :searching, :roaming, :home, :unregistered].freeze
9
+
10
+ GSM_SIGNALS = { none_or_unknown: 0, poor: 1, moderate: 2, good: 3, great: 4 }.freeze
11
+
12
+ # :gsm // GSM/CSD (up: 14.4, down: 14.4).
13
+ # :scsd // HSCSD (up: 14.4, down: 57.6).
14
+ # :gprs // GPRS (up: 28.8, down: 57.6).
15
+ # :edge // EDGE/EGPRS (up: 473.6, down: 473.6).
16
+ # :umts // UMTS/3G (up: 384.0, down: 384.0).
17
+ # :hsdpa // HSDPA (up: 5760.0, down: 13,980.0).
18
+ # :lte // LTE (up: 58,000, down: 173,000).
19
+ # :evdo // EVDO (up: 75,000, down: 280,000).
20
+ # :full // No limit, the default (up: 0.0, down: 0.0).
21
+ NET_SPEED = [:gsm, :scsd, :gprs, :edge, :umts, :hsdpa, :lte, :evdo, :full].freeze
22
+
23
+ POWER_AC_STATE = [:on, :off].freeze
24
+
25
+ # @!method send_sms(phone_number:, message:)
26
+ # Emulate send SMS event on the connected emulator.
27
+ #
28
+ # @param [String] phone_number: The phone number of message sender
29
+ # @param [String] message: The message to send
30
+ #
31
+ # @example
32
+ #
33
+ # @driver.send_sms phone_number: '00000000000', message: 'test message'
34
+ #
35
+
36
+ # @!method gsm_call(phone_number:, action:)
37
+ # Emulate GSM call event on the connected emulator.
38
+ #
39
+ # @param [String] phone_number: The phone number of message sender
40
+ # @param [Hash] action: One of available GSM call actions. Available action is GSM_CALL_ACTION.
41
+ #
42
+ # @example
43
+ #
44
+ # @driver.gsm_call phone_number: '00000000000', action: :call
45
+ #
46
+
47
+ # @!method gsm_signal(signal_strength)
48
+ # Emulate GSM signal strength change event on the connected emulator.
49
+ #
50
+ # @param [Hash] signal_strength One of available GSM signal strength. Available action is GSM_SIGNAL.
51
+ #
52
+ # @example
53
+ #
54
+ # @driver.gsm_signal :good
55
+ #
56
+
57
+ # @!method gsm_voice(state)
58
+ # Emulate GSM voice event on the connected emulator.
59
+ #
60
+ # @param [Hash] state One of available GSM voice state. Available action is GSM_VOICE_STATE.
61
+ #
62
+ # @example
63
+ #
64
+ # @driver.gsm_voice :on
65
+ #
66
+
67
+ # @!method set_network_speed(netspeed)
68
+ # Emulate network speed change event on the connected emulator.
69
+ #
70
+ # @param [Hash] netspeed One of available Network Speed values. Available action is NET_SPEED.
71
+ #
72
+ # @example
73
+ #
74
+ # @driver.set_network_speed :gsm
75
+ #
76
+
77
+ # @!method set_power_capacity(percent)
78
+ # Emulate power capacity change on the connected emulator.
79
+ #
80
+ # @param [Integer] percent Percentage value in range [0, 100].
81
+ #
82
+ # @example
83
+ #
84
+ # @driver.set_power_capacity 10
85
+ #
86
+
87
+ # @!method set_power_ac(state)
88
+ # Emulate power state change on the connected emulator.
89
+ #
90
+ # @param [Hash] state One of available power AC state. Available action is POWER_AC_STATE.
91
+ #
92
+ # @example
93
+ #
94
+ # @driver.set_power_ac :on
95
+ #
96
+
97
+ ####
98
+ ## self.emulator_commands
99
+ ####
100
+
101
+ def self.add_methods
102
+ ::Appium::Core::Device.add_endpoint_method(:send_sms) do
103
+ def send_sms(phone_number:, message:)
104
+ execute(:send_sms, {}, { phoneNumber: phone_number, message: message })
105
+ end
104
106
  end
105
- end
106
107
 
107
- Appium::Core::Device.add_endpoint_method(:gsm_call) do
108
- def gsm_call(phone_number:, action:)
109
- unless GSM_CALL_ACTIONS.member? action.to_sym
110
- raise "action: should be member of #{GSM_CALL_ACTIONS}. Not #{action}."
111
- end
108
+ ::Appium::Core::Device.add_endpoint_method(:gsm_call) do
109
+ def gsm_call(phone_number:, action:)
110
+ unless GSM_CALL_ACTIONS.member? action.to_sym
111
+ raise "action: should be member of #{GSM_CALL_ACTIONS}. Not #{action}."
112
+ end
112
113
 
113
- execute(:gsm_call, {}, { phoneNumber: phone_number, action: action })
114
+ execute(:gsm_call, {}, { phoneNumber: phone_number, action: action })
115
+ end
114
116
  end
115
- end
116
117
 
117
- Appium::Core::Device.add_endpoint_method(:gsm_signal) do
118
- def gsm_signal(signal_strength)
119
- raise "#{signal_strength} should be member of #{GSM_SIGNALS} " if GSM_SIGNALS[signal_strength.to_sym].nil?
118
+ ::Appium::Core::Device.add_endpoint_method(:gsm_signal) do
119
+ def gsm_signal(signal_strength)
120
+ raise "#{signal_strength} should be member of #{GSM_SIGNALS} " if GSM_SIGNALS[signal_strength.to_sym].nil?
120
121
 
121
- execute(:gsm_signal, {}, { signalStrengh: GSM_SIGNALS[signal_strength] })
122
+ execute(:gsm_signal, {}, { signalStrengh: GSM_SIGNALS[signal_strength] })
123
+ end
122
124
  end
123
- end
124
125
 
125
- Appium::Core::Device.add_endpoint_method(:gsm_voice) do
126
- def gsm_voice(state)
127
- unless GSM_VOICE_STATES.member? state.to_sym
128
- raise "The state should be member of #{GSM_VOICE_STATES}. Not #{state}."
129
- end
126
+ ::Appium::Core::Device.add_endpoint_method(:gsm_voice) do
127
+ def gsm_voice(state)
128
+ unless GSM_VOICE_STATES.member? state.to_sym
129
+ raise "The state should be member of #{GSM_VOICE_STATES}. Not #{state}."
130
+ end
130
131
 
131
- execute(:gsm_voice, {}, { state: state })
132
+ execute(:gsm_voice, {}, { state: state })
133
+ end
132
134
  end
133
- end
134
135
 
135
- Appium::Core::Device.add_endpoint_method(:set_network_speed) do
136
- def set_network_speed(netspeed)
137
- unless NET_SPEED.member? netspeed.to_sym
138
- raise "The netspeed should be member of #{NET_SPEED}. Not #{netspeed}."
139
- end
136
+ ::Appium::Core::Device.add_endpoint_method(:set_network_speed) do
137
+ def set_network_speed(netspeed)
138
+ unless NET_SPEED.member? netspeed.to_sym
139
+ raise "The netspeed should be member of #{NET_SPEED}. Not #{netspeed}."
140
+ end
140
141
 
141
- execute(:set_network_speed, {}, { netspeed: netspeed })
142
+ execute(:set_network_speed, {}, { netspeed: netspeed })
143
+ end
142
144
  end
143
- end
144
145
 
145
- Appium::Core::Device.add_endpoint_method(:set_power_capacity) do
146
- def set_power_capacity(percent)
147
- unless (0..100).member? percent
148
- raise "The percent should be between 0 and 100. Not #{percent}."
149
- end
146
+ ::Appium::Core::Device.add_endpoint_method(:set_power_capacity) do
147
+ def set_power_capacity(percent)
148
+ unless (0..100).member? percent
149
+ raise "The percent should be between 0 and 100. Not #{percent}."
150
+ end
150
151
 
151
- execute(:set_power_capacity, {}, { percent: percent })
152
+ execute(:set_power_capacity, {}, { percent: percent })
153
+ end
152
154
  end
153
- end
154
155
 
155
- Appium::Core::Device.add_endpoint_method(:set_power_ac) do
156
- def set_power_ac(state)
157
- unless POWER_AC_STATE.member? state.to_sym
158
- raise "The state should be member of #{POWER_AC_STATE}. Not #{state}."
159
- end
156
+ ::Appium::Core::Device.add_endpoint_method(:set_power_ac) do
157
+ def set_power_ac(state)
158
+ unless POWER_AC_STATE.member? state.to_sym
159
+ raise "The state should be member of #{POWER_AC_STATE}. Not #{state}."
160
+ end
160
161
 
161
- execute(:set_power_ac, {}, { state: state })
162
+ execute(:set_power_ac, {}, { state: state })
163
+ end
162
164
  end
163
- end
164
- end # def self.emulator_commands
165
- end # module Emulator
166
- end # module Device
167
- end # module Android
165
+ end # def self.emulator_commands
166
+ end # module Emulator
167
+ end # module Device
168
+ end # module Android
169
+ end # module Core
168
170
  end # module Appium
@@ -0,0 +1,47 @@
1
+ module Appium
2
+ module Core
3
+ module Android
4
+ module Device
5
+ module Network
6
+ def self.add_methods
7
+ ::Appium::Core::Device.add_endpoint_method(:get_network_connection) do
8
+ def get_network_connection
9
+ execute :get_network_connection
10
+ end
11
+ end
12
+
13
+ ::Appium::Core::Device.add_endpoint_method(:toggle_wifi) do
14
+ def toggle_wifi
15
+ execute :toggle_wifi
16
+ end
17
+ end
18
+
19
+ ::Appium::Core::Device.add_endpoint_method(:toggle_data) do
20
+ def toggle_data
21
+ execute :toggle_data
22
+ end
23
+ end
24
+
25
+ ::Appium::Core::Device.add_endpoint_method(:set_network_connection) do
26
+ def set_network_connection(mode)
27
+ # TODO. Update set_network_connection as well
28
+ # connection_type = {airplane_mode: 1, wifi: 2, data: 4, all: 6, none: 0}
29
+ # raise ArgumentError, 'Invalid connection type' unless type_to_values.keys.include? mode
30
+ # type = connection_type[mode]
31
+ # execute :set_network_connection, {}, type: type
32
+ execute :set_network_connection, {}, type: mode
33
+ end
34
+ end
35
+
36
+ ::Appium::Core::Device.add_endpoint_method(:toggle_airplane_mode) do
37
+ def toggle_airplane_mode
38
+ execute :toggle_airplane_mode
39
+ end
40
+ alias_method :toggle_flight_mode, :toggle_airplane_mode
41
+ end
42
+ end
43
+ end # module Network
44
+ end # module Device
45
+ end # module Android
46
+ end # module Core
47
+ end # module Appium
@@ -0,0 +1,24 @@
1
+ module Appium
2
+ module Core
3
+ module Android
4
+ module Device
5
+ module Performance
6
+ def self.add_methods
7
+ ::Appium::Core::Device.add_endpoint_method(:get_performance_data_types) do
8
+ def get_performance_data_types
9
+ execute :get_performance_data_types
10
+ end
11
+ end
12
+
13
+ ::Appium::Core::Device.add_endpoint_method(:get_performance_data) do
14
+ def get_performance_data(package_name:, data_type:, data_read_timeout: 1000)
15
+ execute(:get_performance_data, {},
16
+ packageName: package_name, dataType: data_type, dataReadTimeout: data_read_timeout)
17
+ end
18
+ end
19
+ end
20
+ end # module Performance
21
+ end # module Device
22
+ end # module Android
23
+ end # module Core
24
+ end # module Appium
@@ -0,0 +1,39 @@
1
+ module Appium
2
+ module Core
3
+ module Android
4
+ module Device
5
+ module Screen
6
+ def self.add_methods
7
+ ::Appium::Core::Device.add_endpoint_method(:get_display_density) do
8
+ def get_display_density
9
+ execute :get_display_density
10
+ end
11
+ end
12
+
13
+ ::Appium::Core::Device.add_endpoint_method(:start_recording_screen) do
14
+ # rubocop:disable Metrics/ParameterLists
15
+ def start_recording_screen(remote_path: nil, user: nil, pass: nil, method: 'PUT', force_restart: nil,
16
+ video_size: nil, time_limit: '180', bit_rate: nil, bug_report: nil)
17
+ option = ::Appium::Core::Device::ScreenRecord.new(
18
+ remote_path: remote_path, user: user, pass: pass, method: method, force_restart: force_restart
19
+ ).upload_option
20
+
21
+ option[:videoSize] = video_size unless video_size.nil?
22
+ option[:timeLimit] = time_limit
23
+ option[:bitRate] = bit_rate unless bit_rate.nil?
24
+
25
+ unless bug_report.nil?
26
+ raise 'bug_report should be true or false' unless [true, false].member?(bug_report)
27
+ option[:bugReport] = bug_report
28
+ end
29
+
30
+ execute(:start_recording_screen, {}, { options: option })
31
+ end
32
+ # rubocop:enable Metrics/ParameterLists
33
+ end
34
+ end
35
+ end # module Screen
36
+ end # module Device
37
+ end # module Android
38
+ end # module Core
39
+ end # module Appium