appium_lib_core 4.1.0 → 6.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +207 -272
  3. data/README.md +41 -14
  4. data/Rakefile +4 -0
  5. data/appium_lib_core.gemspec +5 -8
  6. data/bin/console +0 -4
  7. data/lib/appium_lib_core/android/device/auth_finger_print.rb +2 -1
  8. data/lib/appium_lib_core/android/device.rb +4 -4
  9. data/lib/appium_lib_core/common/base/bridge.rb +311 -90
  10. data/lib/appium_lib_core/common/base/capabilities.rb +8 -9
  11. data/lib/appium_lib_core/common/base/device_ime.rb +49 -0
  12. data/lib/appium_lib_core/common/base/driver.rb +222 -187
  13. data/lib/appium_lib_core/common/base/driver_settings.rb +51 -0
  14. data/lib/appium_lib_core/common/base/has_location.rb +80 -0
  15. data/lib/appium_lib_core/common/base/has_network_connection.rb +56 -0
  16. data/lib/appium_lib_core/common/base/http_default.rb +1 -3
  17. data/lib/appium_lib_core/{ios/uiautomation/bridge.rb → common/base/remote_status.rb} +9 -8
  18. data/lib/appium_lib_core/common/base/rotable.rb +54 -0
  19. data/lib/appium_lib_core/common/base/screenshot.rb +6 -6
  20. data/lib/appium_lib_core/common/base/search_context.rb +20 -6
  21. data/lib/appium_lib_core/common/base.rb +1 -3
  22. data/lib/appium_lib_core/common/command.rb +259 -4
  23. data/lib/appium_lib_core/common/device/app_management.rb +8 -14
  24. data/lib/appium_lib_core/common/device/image_comparison.rb +12 -4
  25. data/lib/appium_lib_core/common/device/keyevent.rb +4 -4
  26. data/lib/appium_lib_core/common/{command/mjsonwp.rb → device/orientation.rb} +14 -11
  27. data/lib/appium_lib_core/common/device/touch_actions.rb +2 -0
  28. data/lib/appium_lib_core/common/device/value.rb +6 -8
  29. data/lib/appium_lib_core/common/error.rb +4 -5
  30. data/lib/appium_lib_core/common/log.rb +4 -1
  31. data/lib/appium_lib_core/common/touch_action/multi_touch.rb +19 -0
  32. data/lib/appium_lib_core/common/touch_action/touch_actions.rb +16 -2
  33. data/lib/appium_lib_core/common/wait.rb +38 -6
  34. data/lib/appium_lib_core/device.rb +1 -5
  35. data/lib/appium_lib_core/driver.rb +177 -102
  36. data/lib/appium_lib_core/{patch.rb → element.rb} +66 -9
  37. data/lib/appium_lib_core/{common/base/command.rb → mac2/bridge.rb} +9 -8
  38. data/lib/appium_lib_core/mac2/device/screen.rb +48 -0
  39. data/lib/appium_lib_core/mac2/device.rb +92 -0
  40. data/lib/appium_lib_core/{ios.rb → mac2.rb} +2 -5
  41. data/lib/appium_lib_core/version.rb +2 -2
  42. data/lib/appium_lib_core/windows/device/app_management.rb +38 -0
  43. data/lib/appium_lib_core/windows/device.rb +2 -0
  44. data/lib/appium_lib_core.rb +20 -10
  45. metadata +27 -83
  46. data/.github/ISSUE_TEMPLATE/issue-report.md +0 -29
  47. data/.github/contributing.md +0 -26
  48. data/.github/issue_template.md +0 -20
  49. data/.github/workflows/unittest.yml +0 -68
  50. data/.gitignore +0 -18
  51. data/.rubocop.yml +0 -58
  52. data/azure-pipelines.yml +0 -15
  53. data/ci-jobs/functional/android_setup.yml +0 -3
  54. data/ci-jobs/functional/ios_setup.yml +0 -7
  55. data/ci-jobs/functional/publish_test_result.yml +0 -18
  56. data/ci-jobs/functional/run_appium.yml +0 -25
  57. data/ci-jobs/functional/start-emulator.sh +0 -26
  58. data/ci-jobs/functional_test.yml +0 -298
  59. data/docs/mobile_command.md +0 -34
  60. data/lib/appium_lib_core/common/base/bridge/mjsonwp.rb +0 -81
  61. data/lib/appium_lib_core/common/base/bridge/w3c.rb +0 -252
  62. data/lib/appium_lib_core/common/command/common.rb +0 -110
  63. data/lib/appium_lib_core/common/command/w3c.rb +0 -56
  64. data/lib/appium_lib_core/ios/uiautomation/device.rb +0 -44
  65. data/lib/appium_lib_core/ios/uiautomation/patch.rb +0 -34
  66. data/release_notes.md +0 -816
  67. data/script/commands.rb +0 -200
@@ -1,81 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
-
15
- module Appium
16
- module Core
17
- class Base
18
- class Bridge
19
- class MJSONWP < ::Selenium::WebDriver::Remote::OSS::Bridge
20
- include Device::DeviceLock
21
- include Device::Keyboard
22
- include Device::ImeActions
23
- include Device::Setting
24
- include Device::Context
25
- include Device::Value
26
- include Device::FileManagement
27
- include Device::KeyEvent
28
- include Device::ImageComparison
29
- include Device::AppManagement
30
- include Device::AppState
31
- include Device::ScreenRecord::Command
32
- include Device::Device
33
- include Device::TouchActions
34
- include Device::ExecuteDriver
35
-
36
- def commands(command)
37
- ::Appium::Core::Commands::MJSONWP::COMMANDS[command]
38
- end
39
-
40
- # Returns all available sessions on the Appium server instance
41
- def sessions
42
- execute :get_all_sessions
43
- end
44
-
45
- # For Appium
46
- def log_event(vendor, event)
47
- execute :post_log_event, {}, { vendor: vendor, event: event }
48
- end
49
-
50
- # For Appium
51
- def log_events(type = nil)
52
- args = {}
53
- args['type'] = type unless type.nil?
54
-
55
- execute :get_log_events, {}, args
56
- end
57
-
58
- def take_element_screenshot(element)
59
- execute :take_element_screenshot, id: element.ref
60
- end
61
-
62
- def take_viewport_screenshot
63
- # TODO: this hasn't been supported by Espresso driver
64
- execute_script('mobile: viewportScreenshot')
65
- end
66
-
67
- def send_actions(_data)
68
- raise Error::UnsupportedOperationError, '#send_actions has not been supported in MJSONWP'
69
- end
70
-
71
- # For Appium
72
- # @param [Hash] id The id which can get as a response from server
73
- # @return [::Selenium::WebDriver::Element]
74
- def convert_to_element(id)
75
- ::Selenium::WebDriver::Element.new self, element_id_from(id)
76
- end
77
- end # class MJSONWP
78
- end # class Bridge
79
- end # class Base
80
- end # module Core
81
- end # module Appium
@@ -1,252 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
-
15
- module Appium
16
- module Core
17
- class Base
18
- class Bridge
19
- class W3C < ::Selenium::WebDriver::Remote::W3C::Bridge
20
- include Device::DeviceLock
21
- include Device::Keyboard
22
- include Device::ImeActions
23
- include Device::Setting
24
- include Device::Context
25
- include Device::Value
26
- include Device::FileManagement
27
- include Device::KeyEvent
28
- include Device::ImageComparison
29
- include Device::AppManagement
30
- include Device::AppState
31
- include Device::ScreenRecord::Command
32
- include Device::Device
33
- include Device::TouchActions
34
- include Device::ExecuteDriver
35
-
36
- def commands(command)
37
- ::Appium::Core::Commands::W3C::COMMANDS[command]
38
- end
39
-
40
- # Returns all available sessions on the Appium server instance
41
- def sessions
42
- execute :get_all_sessions
43
- end
44
-
45
- # Perform touch actions for W3C module.
46
- # Generate +touch+ pointer action here and users can use this via +driver.action+
47
- # - https://seleniumhq.github.io/selenium/docs/api/rb/Selenium/WebDriver/W3CActionBuilder.html
48
- # - https://seleniumhq.github.io/selenium/docs/api/rb/Selenium/WebDriver/PointerActions.html
49
- # - https://seleniumhq.github.io/selenium/docs/api/rb/Selenium/WebDriver/KeyActions.html
50
- #
51
- # 'mouse' action is by default in the Ruby client. Appium server force the +mouse+ action to +touch+ once in
52
- # the server side. So we don't consider the case.
53
- #
54
- # @example
55
- #
56
- # element = @driver.find_element(:id, "some id")
57
- # @driver.action.click(element).perform # The 'click' is a part of 'PointerActions'
58
- #
59
- def action(async = false)
60
- # Used for default duration of each touch actions
61
- # Override from 250 milliseconds to 50 milliseconds
62
- action_builder = super
63
- action_builder.default_move_duration = 0.05
64
- action_builder
65
- end
66
-
67
- # Port from MJSONWP
68
- def get_timeouts
69
- execute :get_timeouts
70
- end
71
-
72
- # Port from MJSONWP
73
- def session_capabilities
74
- ::Selenium::WebDriver::Remote::W3C::Capabilities.json_create execute(:get_capabilities)
75
- end
76
-
77
- # Port from MJSONWP
78
- def send_keys_to_active_element(key)
79
- text = ::Selenium::WebDriver::Keys.encode(key).join('')
80
- execute :send_keys_to_active_element, {}, { value: text.split(//) }
81
- end
82
-
83
- # For Appium
84
- # override
85
- def page_source
86
- # For W3C
87
- # execute_script('var source = document.documentElement.outerHTML;' \
88
- # 'if (!source) { source = new XMLSerializer().serializeToString(document); }' \
89
- # 'return source;')
90
- execute :get_page_source
91
- end
92
-
93
- # For Appium
94
- # override
95
- def element_displayed?(element)
96
- # For W3C
97
- # https://github.com/SeleniumHQ/selenium/commit/b618499adcc3a9f667590652c5757c0caa703289
98
- # execute_atom :isDisplayed, element
99
- execute :is_element_displayed, id: element.ref
100
- end
101
-
102
- # For Appium
103
- # override
104
- def element_attribute(element, name)
105
- # For W3C in Selenium Client
106
- # execute_atom :getAttribute, element, name
107
- execute :get_element_attribute, id: element.ref, name: name
108
- end
109
-
110
- # For Appium
111
- # override
112
- def find_element_by(how, what, parent = nil)
113
- how, what = convert_locators(how, what)
114
-
115
- id = if parent
116
- execute :find_child_element, { id: parent }, { using: how, value: what }
117
- else
118
- execute :find_element, {}, { using: how, value: what }
119
- end
120
- ::Selenium::WebDriver::Element.new self, element_id_from(id)
121
- end
122
-
123
- # For Appium
124
- # override
125
- def find_elements_by(how, what, parent = nil)
126
- how, what = convert_locators(how, what)
127
-
128
- ids = if parent
129
- execute :find_child_elements, { id: parent }, { using: how, value: what }
130
- else
131
- execute :find_elements, {}, { using: how, value: what }
132
- end
133
-
134
- ids.map { |id| ::Selenium::WebDriver::Element.new self, element_id_from(id) }
135
- end
136
-
137
- # For Appium
138
- # @param [Hash] id The id which can get as a response from server
139
- # @return [::Selenium::WebDriver::Element]
140
- def convert_to_element(id)
141
- ::Selenium::WebDriver::Element.new self, element_id_from(id)
142
- end
143
-
144
- # For Appium
145
- # override
146
- # called in 'extend DriverExtensions::HasNetworkConnection'
147
- def network_connection
148
- execute :get_network_connection
149
- end
150
-
151
- # For Appium
152
- # override
153
- # called in 'extend DriverExtensions::HasNetworkConnection'
154
- def network_connection=(type)
155
- execute :set_network_connection, {}, { parameters: { type: type } }
156
- end
157
-
158
- # For Appium
159
- # No implementation for W3C webdriver module
160
- # called in 'extend DriverExtensions::HasLocation'
161
- def location
162
- obj = execute(:get_location) || {}
163
- ::Selenium::WebDriver::Location.new obj['latitude'], obj['longitude'], obj['altitude']
164
- end
165
-
166
- # For Appium
167
- # No implementation for W3C webdriver module
168
- # called in +extend DriverExtensions::HasLocation+
169
- # It has below code as well. We should consider the same context in Selenium 4 as backward compatibility.
170
- #
171
- # def location=(loc)
172
- # # note: Location = Struct.new(:latitude, :longitude, :altitude)
173
- # raise TypeError, "expected #{Location}, got #{loc.inspect}:#{loc.class}" unless loc.is_a?(Location)
174
- #
175
- # @bridge.set_location loc.latitude, loc.longitude, loc.altitude
176
- # end
177
- #
178
- def set_location(lat, lon, alt = 0.0)
179
- loc = { latitude: lat, longitude: lon, altitude: alt }
180
- execute :set_location, {}, { location: loc }
181
- end
182
-
183
- #
184
- # logs
185
- #
186
- # For Appium
187
- # No implementation for W3C webdriver module
188
- def available_log_types
189
- types = execute :get_available_log_types
190
- Array(types).map(&:to_sym)
191
- end
192
-
193
- # For Appium
194
- # No implementation for W3C webdriver module
195
- def log(type)
196
- data = execute :get_log, {}, { type: type.to_s }
197
-
198
- Array(data).map do |l|
199
- begin
200
- ::Selenium::WebDriver::LogEntry.new l.fetch('level', 'UNKNOWN'), l.fetch('timestamp'), l.fetch('message')
201
- rescue KeyError
202
- next
203
- end
204
- end
205
- end
206
-
207
- # For Appium
208
- def log_event(vendor, event)
209
- execute :post_log_event, {}, { vendor: vendor, event: event }
210
- end
211
-
212
- # For Appium
213
- def log_events(type = nil)
214
- args = {}
215
- args['type'] = type unless type.nil?
216
-
217
- execute :get_log_events, {}, args
218
- end
219
-
220
- def take_viewport_screenshot
221
- execute_script('mobile: viewportScreenshot')
222
- end
223
-
224
- def take_element_screenshot(element)
225
- execute :take_element_screenshot, id: element.ref
226
- end
227
-
228
- private
229
-
230
- # Don't convert locators for Appium Client
231
- # TODO: Only for Appium. Ideally, we'd like to keep the selenium-webdriver
232
- def convert_locators(how, what)
233
- # case how
234
- # when 'class name'
235
- # how = 'css selector'
236
- # what = ".#{escape_css(what)}"
237
- # when 'id'
238
- # how = 'css selector'
239
- # what = "##{escape_css(what)}"
240
- # when 'name'
241
- # how = 'css selector'
242
- # what = "*[name='#{escape_css(what)}']"
243
- # when 'tag name'
244
- # how = 'css selector'
245
- # end
246
- [how, what]
247
- end
248
- end # class W3C
249
- end # class Bridge
250
- end # class Base
251
- end # module Core
252
- end # module Appium
@@ -1,110 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
-
15
- module Appium
16
- module Core
17
- # ref: https://github.com/appium/appium-base-driver/blob/master/lib/mjsonwp/routes.js
18
- module Commands
19
- # Some commands differ for each driver.
20
- COMMAND = {
21
- # common
22
- get_all_sessions: [:get, 'sessions'],
23
- available_contexts: [:get, 'session/:session_id/contexts'],
24
- set_context: [:post, 'session/:session_id/context'],
25
- current_context: [:get, 'session/:session_id/context'],
26
-
27
- touch_actions: [:post, 'session/:session_id/touch/perform'],
28
- multi_touch: [:post, 'session/:session_id/touch/multi/perform'],
29
-
30
- set_immediate_value: [:post, 'session/:session_id/appium/element/:id/value'],
31
- replace_value: [:post, 'session/:session_id/appium/element/:id/replace_value'],
32
-
33
- launch_app: [:post, 'session/:session_id/appium/app/launch'],
34
- close_app: [:post, 'session/:session_id/appium/app/close'],
35
- reset: [:post, 'session/:session_id/appium/app/reset'],
36
- background_app: [:post, 'session/:session_id/appium/app/background'],
37
- app_strings: [:post, 'session/:session_id/appium/app/strings'],
38
-
39
- device_locked?: [:post, 'session/:session_id/appium/device/is_locked'],
40
- unlock: [:post, 'session/:session_id/appium/device/unlock'],
41
- lock: [:post, 'session/:session_id/appium/device/lock'],
42
- device_time: [:get, 'session/:session_id/appium/device/system_time'],
43
- install_app: [:post, 'session/:session_id/appium/device/install_app'],
44
- remove_app: [:post, 'session/:session_id/appium/device/remove_app'],
45
- app_installed?: [:post, 'session/:session_id/appium/device/app_installed'],
46
- activate_app: [:post, 'session/:session_id/appium/device/activate_app'],
47
- terminate_app: [:post, 'session/:session_id/appium/device/terminate_app'],
48
- app_state: [:post, 'session/:session_id/appium/device/app_state'],
49
- shake: [:post, 'session/:session_id/appium/device/shake'],
50
- hide_keyboard: [:post, 'session/:session_id/appium/device/hide_keyboard'],
51
- press_keycode: [:post, 'session/:session_id/appium/device/press_keycode'],
52
- long_press_keycode: [:post, 'session/:session_id/appium/device/long_press_keycode'],
53
- # keyevent is only for Selendroid
54
- keyevent: [:post, 'session/:session_id/appium/device/keyevent'],
55
- push_file: [:post, 'session/:session_id/appium/device/push_file'],
56
- pull_file: [:post, 'session/:session_id/appium/device/pull_file'],
57
- pull_folder: [:post, 'session/:session_id/appium/device/pull_folder'],
58
- get_clipboard: [:post, 'session/:session_id/appium/device/get_clipboard'],
59
- set_clipboard: [:post, 'session/:session_id/appium/device/set_clipboard'],
60
- finger_print: [:post, 'session/:session_id/appium/device/finger_print'],
61
- get_settings: [:get, 'session/:session_id/appium/settings'],
62
- update_settings: [:post, 'session/:session_id/appium/settings'],
63
- stop_recording_screen: [:post, 'session/:session_id/appium/stop_recording_screen'],
64
- start_recording_screen: [:post, 'session/:session_id/appium/start_recording_screen'],
65
- compare_images: [:post, 'session/:session_id/appium/compare_images'],
66
- is_keyboard_shown: [:get, 'session/:session_id/appium/device/is_keyboard_shown'],
67
- execute_driver: [:post, 'session/:session_id/appium/execute_driver'],
68
- post_log_event: [:post, 'session/:session_id/appium/log_event'],
69
- get_log_events: [:post, 'session/:session_id/appium/events']
70
- }.freeze
71
-
72
- COMMAND_ANDROID = {
73
- open_notifications: [:post, 'session/:session_id/appium/device/open_notifications'],
74
- toggle_airplane_mode: [:post, 'session/:session_id/appium/device/toggle_airplane_mode'],
75
- start_activity: [:post, 'session/:session_id/appium/device/start_activity'],
76
- current_activity: [:get, 'session/:session_id/appium/device/current_activity'],
77
- current_package: [:get, 'session/:session_id/appium/device/current_package'],
78
- get_system_bars: [:get, 'session/:session_id/appium/device/system_bars'],
79
- get_display_density: [:get, 'session/:session_id/appium/device/display_density'],
80
- toggle_wifi: [:post, 'session/:session_id/appium/device/toggle_wifi'],
81
- toggle_data: [:post, 'session/:session_id/appium/device/toggle_data'],
82
- toggle_location_services: [:post, 'session/:session_id/appium/device/toggle_location_services'],
83
- end_coverage: [:post, 'session/:session_id/appium/app/end_test_coverage'],
84
- get_performance_data_types: [:post, 'session/:session_id/appium/performanceData/types'],
85
- get_performance_data: [:post, 'session/:session_id/appium/getPerformanceData'],
86
- get_network_connection: [:get, 'session/:session_id/network_connection'], # defined also in OSS
87
- set_network_connection: [:post, 'session/:session_id/network_connection'], # defined also in OSS
88
-
89
- # only emulator
90
- send_sms: [:post, 'session/:session_id/appium/device/send_sms'],
91
- gsm_call: [:post, 'session/:session_id/appium/device/gsm_call'],
92
- gsm_signal: [:post, 'session/:session_id/appium/device/gsm_signal'],
93
- gsm_voice: [:post, 'session/:session_id/appium/device/gsm_voice'],
94
- set_network_speed: [:post, 'session/:session_id/appium/device/network_speed'],
95
- set_power_capacity: [:post, 'session/:session_id/appium/device/power_capacity'],
96
- set_power_ac: [:post, 'session/:session_id/appium/device/power_ac'],
97
-
98
- # For chromium: https://chromium.googlesource.com/chromium/src/+/master/chrome/test/chromedriver/server/http_handler.cc
99
- chrome_send_command: [:post, 'session/:session_id/goog/cdp/execute']
100
- }.freeze
101
-
102
- COMMAND_IOS = {
103
- touch_id: [:post, 'session/:session_id/appium/simulator/touch_id'],
104
- toggle_touch_id_enrollment: [:post, 'session/:session_id/appium/simulator/toggle_touch_id_enrollment']
105
- }.freeze
106
-
107
- COMMANDS = {}.merge(COMMAND).merge(COMMAND_ANDROID).merge(COMMAND_IOS).freeze
108
- end # module Commands
109
- end # module Core
110
- end # module Appium
@@ -1,56 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
-
15
- module Appium
16
- module Core
17
- module Commands
18
- module W3C
19
- COMMANDS = ::Appium::Core::Commands::COMMANDS.merge(::Appium::Core::Base::Commands::W3C).merge(
20
- {
21
- # ::Appium::Core::Base::Commands::OSS has the following commands and Appium also use them.
22
- # Delegated to ::Appium::Core::Base::Commands::OSS commands
23
- status: [:get, 'status'], # https://w3c.github.io/webdriver/#dfn-status
24
- is_element_displayed: [:get, 'session/:session_id/element/:id/displayed'], # hint: https://w3c.github.io/webdriver/#element-displayedness
25
-
26
- get_timeouts: [:get, 'session/:session_id/timeouts'], # https://w3c.github.io/webdriver/#get-timeouts
27
-
28
- # Add OSS commands to W3C commands. We can remove them if we would like to remove them from W3C module.
29
- ### Session capability
30
- get_capabilities: [:get, 'session/:session_id'],
31
-
32
- ### rotatable
33
- get_screen_orientation: [:get, 'session/:session_id/orientation'],
34
- set_screen_orientation: [:post, 'session/:session_id/orientation'],
35
-
36
- get_location: [:get, 'session/:session_id/location'],
37
- set_location: [:post, 'session/:session_id/location'],
38
-
39
- ### For IME
40
- ime_get_available_engines: [:get, 'session/:session_id/ime/available_engines'],
41
- ime_get_active_engine: [:get, 'session/:session_id/ime/active_engine'],
42
- ime_is_activated: [:get, 'session/:session_id/ime/activated'],
43
- ime_deactivate: [:post, 'session/:session_id/ime/deactivate'],
44
- ime_activate_engine: [:post, 'session/:session_id/ime/activate'],
45
-
46
- send_keys_to_active_element: [:post, 'session/:session_id/keys'],
47
-
48
- ### Logs
49
- get_available_log_types: [:get, 'session/:session_id/log/types'],
50
- get_log: [:post, 'session/:session_id/log']
51
- }
52
- ).freeze
53
- end # module W3C
54
- end # module Commands
55
- end # module Core
56
- end # module Appium
@@ -1,44 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
-
15
- module Appium
16
- module Core
17
- module Ios
18
- module Uiautomation
19
- module Device
20
- def self.add_methods
21
- # UiAutomation, Override included method in bridge
22
- ::Appium::Core::Device.add_endpoint_method(:hide_keyboard) do
23
- def hide_keyboard(close_key = nil, strategy = nil)
24
- option = {}
25
-
26
- option[:key] = close_key || 'Done' # default to Done key.
27
- option[:strategy] = strategy || :pressKey # default to pressKey
28
-
29
- execute :hide_keyboard, {}, option
30
- end
31
- end
32
-
33
- # UiAutomation, Override included method in bridge
34
- ::Appium::Core::Device.add_endpoint_method(:background_app) do
35
- def background_app(duration = 0)
36
- execute :background_app, {}, seconds: duration
37
- end
38
- end
39
- end
40
- end # module Device
41
- end # module Uiautomation
42
- end # module Ios
43
- end # module Core
44
- end # module Appium
@@ -1,34 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
-
15
- module Appium
16
- module Core
17
- module Ios
18
- module Uiautomation
19
- # @private
20
- # class_eval inside a method because class Selenium::WebDriver::Element
21
- # will trigger as soon as the file is required. in contrast a method
22
- # will trigger only when invoked.
23
- def self.patch_webdriver_element
24
- ::Selenium::WebDriver::Element.class_eval do
25
- # Cross platform way of entering text into a textfield
26
- def type(text, driver)
27
- driver.execute_script %(au.getElement('#{ref}').setValue('#{text}');)
28
- end # def type
29
- end # Selenium::WebDriver::Element.class_eval
30
- end # def patch_webdriver_element
31
- end # module Uiautomation
32
- end # module Ios
33
- end # module Core
34
- end # module Appium