Class: Appium::Core::Base::Driver
- Inherits:
-
Selenium::WebDriver::Driver
- Object
- Selenium::WebDriver::Driver
- Appium::Core::Base::Driver
- Includes:
- HasLocation, HasNetworkConnection, HasRemoteStatus, Rotatable, SearchContext, TakesScreenshot, Waitable, Selenium::WebDriver::DriverExtensions::HasSessionId, Selenium::WebDriver::DriverExtensions::HasWebStorage, Selenium::WebDriver::DriverExtensions::UploadsFiles
- Defined in:
- lib/appium_lib_core/common/base/driver.rb
Constant Summary collapse
- AVAILABLE_METHODS =
[ :get, :head, :post, :put, :delete, :connect, :options, :trace, :patch ].freeze
Constants included from SearchContext
Constants included from Rotatable
Instance Attribute Summary collapse
-
#bridge ⇒ Object
readonly
Private API.
Instance Method Summary collapse
-
#activate_app(app_id) ⇒ Hash
Activate(Launch) the specified app.
-
#add_command(method:, url:, name:, &block) ⇒ Object
Define a new custom method to the driver so that you can define your own method for drivers/plugins in Appium 2.0.
-
#app_installed?(app_id) ⇒ Boolean
Check whether the specified app is installed on the device.
-
#app_state(app_id) ⇒ AppState::STATUS
(also: #query_app_state)
Get the status of an existing application on the device.
-
#app_strings(language = nil) ⇒ Hash
Return the hash of all localization strings.
-
#available_contexts ⇒ Array<String>
All usable contexts, as an array of strings.
-
#back ⇒ String
Get the device window’s size.
-
#background_app(duration = 0) ⇒ String
Backgrounds the app for a set number of seconds.
-
#close_app ⇒ Object
deprecated
Deprecated.
Except for Windows
- #compare_images(mode: :matchFeatures, first_image:, second_image:, options: nil) ⇒ Object
-
#context=(context = null) ⇒ Object
(also: #set_context)
Change the context to the given context.
-
#convert_to_element(id) ⇒ ::Appium::Core::Element
Convert vanilla element response to ::Appium::Core::Element.
-
#current_context ⇒ String
The context currently being used.
-
#device_time(format = nil) ⇒ String
Get the time on the device.
-
#execute_driver(script: '', type: 'webdriverio', timeout_ms: nil) ⇒ Appium::Core::Base::Device::ExecuteDriver::Result
Run a set of script against the current session, allowing execution of many commands in one Appium request.
-
#find_element_by_image(img_path) ⇒ ::Appium::Core::Element
Return an element if current view has a partial image.
-
#find_elements_by_image(img_path) ⇒ Array<::Appium::Core::Element>
Return elements if current view has a partial image.
- #find_image_occurrence(full_image:, partial_image:, visualize: false, threshold: nil, multiple: nil, match_neighbour_threshold: nil) ⇒ Object
- #get_images_similarity(first_image:, second_image:, visualize: false) ⇒ Object
-
#get_settings ⇒ Object
Get appium Settings for current test session.
-
#get_timeouts ⇒ Hash
For W3C.
-
#hide_keyboard(close_key = nil, strategy = nil) ⇒ Object
Hide the onscreen keyboard.
-
#ime ⇒ Appium::Core::Base::Driver::DeviceIME
Returns an instance of DeviceIME.
-
#ime_activate(ime_name) ⇒ Object
Android only.
- #ime_activated ⇒ Boolean
-
#ime_active_engine ⇒ Object
Android only.
-
#ime_available_engines ⇒ Object
Android only.
-
#ime_deactivate ⇒ Object
Android only.
-
#initialize(bridge: nil, listener: nil, **opts) ⇒ Driver
constructor
A new instance of Driver.
-
#install_app(path, **options) ⇒ Object
Install the given app onto the device.
-
#key_action(async: false) ⇒ Object
Perform ‘key’ actions for W3C module.
-
#keyboard_shown? ⇒ Boolean
(also: #is_keyboard_shown)
Get whether keyboard is displayed or not.
-
#launch_app ⇒ Object
deprecated
Deprecated.
Except for Windows
-
#lock(duration = nil) ⇒ String
Lock the device.
-
#locked? ⇒ Boolean
(also: #device_locked?)
Check current device status is weather locked or not.
-
#logs ⇒ Appium::Core::Logs
Get the device window’s logs.
-
#long_press_keycode(key, metastate: [], flags: []) ⇒ Object
Long press keycode on the device.
-
#match_images_features(first_image:, second_image:, detector_name: 'ORB', match_func: 'BruteForce', good_matches_factor: nil, visualize: false) ⇒ Object
Image Comparison.
- #multi_touch(actions) ⇒ Object
-
#perform_actions(data) ⇒ Object
Send multiple W3C action chains to server.
-
#press_keycode(key, metastate: [], flags: []) ⇒ Object
Press keycode on the device.
-
#pull_file(path) ⇒ Base64-decoded
Pull a file from the remote device.
-
#pull_folder(path) ⇒ Base64-decoded
Pull a folder content from the remote device.
-
#push_file(path, filedata) ⇒ Object
Place a file in a specific location on the device.
- #remove_app(app_id, keep_data: nil, timeout: nil) ⇒ Object
- #reset ⇒ Object deprecated Deprecated.
-
#session_capabilities ⇒ Selenium::WebDriver::Remote::Capabilities
Retrieve the capabilities of the specified session.
-
#sessions ⇒ [Hash]
Returns available sessions on the Appium server.
-
#settings ⇒ Object
Returns an instance of DriverSettings to call get/update.
-
#settings=(value) ⇒ Object
(also: #update_settings)
Update Appium Settings for current test session Alias of @driver.settings#update.
-
#shake ⇒ Object
Cause the device to shake.
- #stop_and_save_recording_screen(file_path) ⇒ Object
- #stop_recording_screen(remote_path: nil, user: nil, pass: nil, method: 'PUT') ⇒ Object
-
#switch_to_default_context ⇒ Object
Change to the default context.
-
#terminate_app(app_id, timeout: nil) ⇒ Boolean
Terminate the specified app.
-
#touch_actions(actions) ⇒ Object
touch actions.
-
#unlock ⇒ Object
Unlock the device.
-
#update_sending_request_to(protocol:, host:, port:, path:) ⇒ Object
Update
server_urland HTTP clients following this arguments, protocol, host, port and path. -
#window_rect ⇒ Selenium::WebDriver::Rectangle
Get the device window’s rect.
-
#window_size ⇒ Selenium::WebDriver::Dimension
Get the device window’s size.
-
#within_context(context, &block) ⇒ Object
Perform a block within the given context, then switch back to the starting context.
Methods included from Waitable
Methods included from HasNetworkConnection
#network_connection_type, #network_connection_type=
Methods included from HasLocation
#location, #location=, #set_location
Methods included from HasRemoteStatus
Methods included from TakesScreenshot
#element_screenshot_as, #save_element_screenshot, #save_screenshot, #save_viewport_screenshot, #screenshot_as
Methods included from SearchContext
Methods included from Rotatable
Constructor Details
#initialize(bridge: nil, listener: nil, **opts) ⇒ Driver
Returns a new instance of Driver.
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 47 def initialize(bridge: nil, listener: nil, **opts) original_opts = opts.dup # For ::Appium::Core::Waitable @wait_timeout = opts.delete(:wait_timeout) @wait_interval = opts.delete(:wait_interval) # Selenium WebDriver attributes @devtools = nil @bidi = nil # in the selenium webdriver as well bridge ||= create_bridge(**opts) add_extensions(bridge.browser) @bridge = listener ? ::Appium::Support::EventFiringBridge.new(bridge, listener, **original_opts) : bridge end |
Instance Attribute Details
#bridge ⇒ Object (readonly)
Private API. Do not use this for general use. Used by flutter driver to get bridge for creating a new element
45 46 47 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 45 def bridge @bridge end |
Instance Method Details
#activate_app(app_id) ⇒ Hash
Activate(Launch) the specified app.
710 711 712 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 710 def activate_app(app_id) @bridge.activate_app(app_id) end |
#add_command(method:, url:, name:, &block) ⇒ Object
Define a new custom method to the driver so that you can define your own method for drivers/plugins in Appium 2.0. Appium 2.0 and its custom drivers/plugins allow you to define custom commands that are not part of W3C spec.
188 189 190 191 192 193 194 195 196 197 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 188 def add_command(method:, url:, name:, &block) unless AVAILABLE_METHODS.include? method raise ::Appium::Core::Error::ArgumentError, "Available method is either #{AVAILABLE_METHODS}" end # TODO: Remove this logger before Appium 2.0 release ::Appium::Logger.info '[Experimental] this method is experimental for Appium 2.0. This interface may change.' @bridge.add_command method: method, url: url, name: name, &block end |
#app_installed?(app_id) ⇒ Boolean
Check whether the specified app is installed on the device
699 700 701 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 699 def app_installed?(app_id) @bridge.app_installed?(app_id) end |
#app_state(app_id) ⇒ AppState::STATUS Also known as: query_app_state
Get the status of an existing application on the device. State:
:not_installed : The current application state cannot be determined/is unknown
:not_running : The application is not running
:running_in_background_suspended : The application is running in the background and is suspended
:running_in_background : The application is running in the background and is not suspended
:running_in_foreground : The application is running in the foreground
For more details: developer.apple.com/documentation/xctest/xcuiapplicationstate
749 750 751 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 749 def app_state(app_id) @bridge.app_state(app_id) end |
#app_strings(language = nil) ⇒ Hash
Return the hash of all localization strings.
623 624 625 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 623 def app_strings(language = nil) @bridge.app_strings(language) end |
#available_contexts ⇒ Array<String>
Returns All usable contexts, as an array of strings.
445 446 447 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 445 def available_contexts @bridge.available_contexts end |
#back ⇒ String
Get the device window’s size.
894 895 896 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 894 def back navigate.back end |
#background_app(duration = 0) ⇒ String
Backgrounds the app for a set number of seconds. This is a blocking application
638 639 640 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 638 def background_app(duration = 0) @bridge.background_app(duration) end |
#close_app ⇒ Object
Except for Windows
Close an app on device
597 598 599 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 597 def close_app @bridge.close_app end |
#compare_images(mode: :matchFeatures, first_image:, second_image:, options: nil) ⇒ Object
1046 1047 1048 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 1046 def compare_images(mode: :matchFeatures, first_image:, second_image:, options: nil) @bridge.compare_images(mode: mode, first_image: first_image, second_image: second_image, options: ) end |
#context=(context = null) ⇒ Object Also known as: set_context
Change the context to the given context.
457 458 459 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 457 def context=(context = null) @bridge.set_context(context) end |
#convert_to_element(id) ⇒ ::Appium::Core::Element
Convert vanilla element response to ::Appium::Core::Element
1139 1140 1141 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 1139 def convert_to_element(id) @bridge.convert_to_element id end |
#current_context ⇒ String
Returns The context currently being used.
435 436 437 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 435 def current_context @bridge.current_context end |
#device_time(format = nil) ⇒ String
Get the time on the device
811 812 813 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 811 def device_time(format = nil) @bridge.device_time(format) end |
#execute_driver(script: '', type: 'webdriverio', timeout_ms: nil) ⇒ Appium::Core::Base::Device::ExecuteDriver::Result
Run a set of script against the current session, allowing execution of many commands in one Appium request. Supports WebdriverIO API so far. Please read command API for more details about acceptable scripts and the output.
1125 1126 1127 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 1125 def execute_driver(script: '', type: 'webdriverio', timeout_ms: nil) @bridge.execute_driver(script: script, type: type, timeout_ms: timeout_ms) end |
#find_element_by_image(img_path) ⇒ ::Appium::Core::Element
Return an element if current view has a partial image. The logic depends on template matching by OpenCV. image-comparison
You can handle settings for the comparision following below. device-settings
1067 1068 1069 1070 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 1067 def find_element_by_image(img_path) template = Base64.strict_encode64 File.read img_path find_element :image, template end |
#find_elements_by_image(img_path) ⇒ Array<::Appium::Core::Element>
Return elements if current view has a partial image. The logic depends on template matching by OpenCV. image-comparison
You can handle settings for the comparision following below. device-settings
1090 1091 1092 1093 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 1090 def find_elements_by_image(img_path) template = Base64.strict_encode64 File.read img_path find_elements :image, template end |
#find_image_occurrence(full_image:, partial_image:, visualize: false, threshold: nil, multiple: nil, match_neighbour_threshold: nil) ⇒ Object
1032 1033 1034 1035 1036 1037 1038 1039 1040 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 1032 def find_image_occurrence(full_image:, partial_image:, visualize: false, threshold: nil, multiple: nil, match_neighbour_threshold: nil) @bridge.find_image_occurrence(full_image: full_image, partial_image: partial_image, visualize: visualize, threshold: threshold, multiple: multiple, match_neighbour_threshold: match_neighbour_threshold) end |
#get_images_similarity(first_image:, second_image:, visualize: false) ⇒ Object
1042 1043 1044 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 1042 def get_images_similarity(first_image:, second_image:, visualize: false) @bridge.get_images_similarity(first_image: first_image, second_image: second_image, visualize: visualize) end |
#get_settings ⇒ Object
Get appium Settings for current test session. Alias of @driver.settings.get
309 310 311 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 309 def get_settings settings.get end |
#get_timeouts ⇒ Hash
For W3C. Get the timeout related settings on the server side.
918 919 920 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 918 def get_timeouts @bridge.get_timeouts end |
#hide_keyboard(close_key = nil, strategy = nil) ⇒ Object
Hide the onscreen keyboard
274 275 276 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 274 def hide_keyboard(close_key = nil, strategy = nil) @bridge.hide_keyboard close_key, strategy end |
#ime ⇒ Appium::Core::Base::Driver::DeviceIME
Returns an instance of DeviceIME
341 342 343 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 341 def ime @ime ||= DeviceIME.new(@bridge) end |
#ime_activate(ime_name) ⇒ Object
Android only. Make an engine that is available active.
354 355 356 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 354 def ime_activate(ime_name) ime.activate(ime_name) end |
#ime_activated ⇒ Boolean
390 391 392 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 390 def ime_activated ime.activated? end |
#ime_active_engine ⇒ Object
Android only. Get the name of the active IME engine.
376 377 378 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 376 def ime_active_engine ime.active_engine end |
#ime_available_engines ⇒ Object
Android only. List all available input engines on the machine.
365 366 367 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 365 def ime_available_engines ime.available_engines end |
#ime_deactivate ⇒ Object
Android only. De-activates the currently-active IME engine.
401 402 403 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 401 def ime_deactivate ime.deactivate end |
#install_app(path, **options) ⇒ Object
Install the given app onto the device. Each options can be snake-case or camel-case. Snake-cases will be converted to camel-case as options value.
Other parameters such as github.com/appium/appium-xcuitest-driver#mobile-installapp also can be set. Then, arguments in snake case will be camel case as its request parameters.
668 669 670 671 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 668 def install_app(path, **) = .transform_keys { |key| key.to_s.gsub(/_./) { |v| v[1].upcase } } unless .nil? @bridge.install_app(path, ) end |
#key_action(async: false) ⇒ Object
Perform ‘key’ actions for W3C module. Generate key pointer action here and users can use this via driver.key_action
-
seleniumhq.github.io/selenium/docs/api/rb/Selenium/WebDriver/W3CActionBuilder.html
-
seleniumhq.github.io/selenium/docs/api/rb/Selenium/WebDriver/KeyActions.html
The pointer type is ‘key’ by default in the Appium Ruby client. driver.action in Appium Ruby client has ‘pointer’ action by default. This method is a shortcut to set ‘key’ type. Hense this method is equal to driver.action(devices: [::Selenium::WebDriver::Interactions.key(‘keyboard’)]) as below example.
219 220 221 222 223 224 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 219 def key_action(async: false) @bridge.action( async: async, devices: [::Selenium::WebDriver::Interactions.key('keyboard')] ) end |
#keyboard_shown? ⇒ Boolean Also known as: is_keyboard_shown
Get whether keyboard is displayed or not.
285 286 287 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 285 def keyboard_shown? @bridge.is_keyboard_shown end |
#launch_app ⇒ Object
Except for Windows
Start the simulator and application configured with desired capabilities
586 587 588 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 586 def launch_app @bridge.launch_app end |
#lock(duration = nil) ⇒ String
Lock the device
235 236 237 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 235 def lock(duration = nil) @bridge.lock(duration) end |
#locked? ⇒ Boolean Also known as: device_locked?
Check current device status is weather locked or not
246 247 248 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 246 def locked? @bridge.device_locked? end |
#logs ⇒ Appium::Core::Logs
Get the device window’s logs.
906 907 908 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 906 def logs @logs ||= Logs.new(@bridge) end |
#long_press_keycode(key, metastate: [], flags: []) ⇒ Object
Long press keycode on the device. developer.android.com/reference/android/view/KeyEvent.html
575 576 577 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 575 def long_press_keycode(key, metastate: [], flags: []) @bridge.long_press_keycode(key, metastate: , flags: flags) end |
#match_images_features(first_image:, second_image:, detector_name: 'ORB', match_func: 'BruteForce', good_matches_factor: nil, visualize: false) ⇒ Object
Image Comparison
1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 1018 def match_images_features(first_image:, second_image:, detector_name: 'ORB', match_func: 'BruteForce', good_matches_factor: nil, visualize: false) @bridge.match_images_features(first_image: first_image, second_image: second_image, detector_name: detector_name, match_func: match_func, good_matches_factor: good_matches_factor, visualize: visualize) end |
#multi_touch(actions) ⇒ Object
820 821 822 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 820 def multi_touch(actions) @bridge.multi_touch(actions) end |
#perform_actions(data) ⇒ Object
Send multiple W3C action chains to server. Use @driver.action for single action chain.
@example: Zoom
f1 = ::Selenium::WebDriver::Interactions.pointer(:touch, name: 'finger1')
f1.create_pointer_move(duration: 1, x: 200, y: 500,
origin: ::Selenium::WebDriver::Interactions::PointerMove::VIEWPORT)
f1.create_pointer_down(:left)
f1.create_pointer_move(duration: 1, x: 200, y: 200,
origin: ::Selenium::WebDriver::Interactions::PointerMove::VIEWPORT)
f1.create_pointer_up(:left)
f2 = ::Selenium::WebDriver::Interactions.pointer(:touch, name: 'finger2')
f2.create_pointer_move(duration: 1, x: 200, y: 500,
origin: ::Selenium::WebDriver::Interactions::PointerMove::VIEWPORT)
f2.create_pointer_down(:left)
f2.create_pointer_move(duration: 1, x: 200, y: 800,
origin: ::Selenium::WebDriver::Interactions::PointerMove::VIEWPORT)
f2.create_pointer_up(:left)
@driver.perform_actions [f1, f2] #=> 'nil' if the action succeed
850 851 852 853 854 855 856 857 858 859 860 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 850 def perform_actions(data) raise ::Appium::Core::Error::ArgumentError, "'#{data}' must be Array" unless data.is_a? Array # NOTE: 'add_input' in Selenium Ruby implementation has additional 'pause'. # This implementation is to avoid the additional pause. # https://github.com/SeleniumHQ/selenium/blob/64447d4b03f6986337d1ca8d8b6476653570bcc1/rb/lib/selenium/webdriver/common/action_builder.rb#L207 @bridge.send_actions data.map(&:encode).compact data.each(&:clear_actions) nil end |
#press_keycode(key, metastate: [], flags: []) ⇒ Object
Press keycode on the device. developer.android.com/reference/android/view/KeyEvent.html
553 554 555 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 553 def press_keycode(key, metastate: [], flags: []) @bridge.press_keycode(key, metastate: , flags: flags) end |
#pull_file(path) ⇒ Base64-decoded
Pull a file from the remote device. On Android the application under test should be built with debuggable flag enabled in order to get access to its container on the internal file system.
506 507 508 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 506 def pull_file(path) @bridge.pull_file(path) end |
#pull_folder(path) ⇒ Base64-decoded
Pull a folder content from the remote device. On Android the application under test should be built with debuggable flag enabled in order to get access to its container on the internal file system.
531 532 533 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 531 def pull_folder(path) @bridge.pull_folder(path) end |
#push_file(path, filedata) ⇒ Object
Place a file in a specific location on the device. On Android, the application under test should be built with debuggable flag enabled in order to get access to its container on the internal file system.
478 479 480 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 478 def push_file(path, filedata) @bridge.push_file(path, filedata) end |
#remove_app(app_id, keep_data: nil, timeout: nil) ⇒ Object
688 689 690 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 688 def remove_app(app_id, keep_data: nil, timeout: nil) @bridge.remove_app(app_id, keep_data: keep_data, timeout: timeout) end |
#reset ⇒ Object
Reset the device, relaunching the application.
608 609 610 611 612 613 614 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 608 def reset ::Appium::Logger.warn( '[DEPRECATION] reset is deprecated. Please use terminate_app and activate_app, ' \ 'or quit and create a new session instead.' ) @bridge.reset end |
#session_capabilities ⇒ Selenium::WebDriver::Remote::Capabilities
Retrieve the capabilities of the specified session. It’s almost same as @driver.capabilities but you can get more details.
1001 1002 1003 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 1001 def session_capabilities @bridge.session_capabilities end |
#sessions ⇒ [Hash]
Returns available sessions on the Appium server
1013 1014 1015 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 1013 def sessions @bridge.sessions end |
#settings ⇒ Object
Returns an instance of DriverSettings to call get/update.
297 298 299 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 297 def settings @settings ||= DriverSettings.new(@bridge) end |
#settings=(value) ⇒ Object Also known as: update_settings
Update Appium Settings for current test session Alias of @driver.settings#update
324 325 326 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 324 def settings=(value) settings.update(value) end |
#shake ⇒ Object
Cause the device to shake
795 796 797 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 795 def shake @bridge.shake end |
#stop_and_save_recording_screen(file_path) ⇒ Object
785 786 787 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 785 def stop_and_save_recording_screen(file_path) @bridge.stop_and_save_recording_screen(file_path) end |
#stop_recording_screen(remote_path: nil, user: nil, pass: nil, method: 'PUT') ⇒ Object
769 770 771 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 769 def stop_recording_screen(remote_path: nil, user: nil, pass: nil, method: 'PUT') @bridge.stop_recording_screen(remote_path: remote_path, user: user, pass: pass, method: method) end |
#switch_to_default_context ⇒ Object
Change to the default context. This is equivalent to set_context nil.
425 426 427 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 425 def switch_to_default_context @bridge.switch_to_default_context end |
#terminate_app(app_id, timeout: nil) ⇒ Boolean
Terminate the specified app.
726 727 728 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 726 def terminate_app(app_id, timeout: nil) @bridge.terminate_app(app_id, timeout: timeout) end |
#touch_actions(actions) ⇒ Object
touch actions
816 817 818 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 816 def touch_actions(actions) @bridge.touch_actions(actions) end |
#unlock ⇒ Object
Unlock the device
257 258 259 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 257 def unlock @bridge.unlock end |
#update_sending_request_to(protocol:, host:, port:, path:) ⇒ Object
Update server_url and HTTP clients following this arguments, protocol, host, port and path. After this method, @bridge.http will be a new instance following them instead of server_url which is set before creating session. If @bridge.http did not have update_sending_request_to method, this method returns immediately.
107 108 109 110 111 112 113 114 115 116 117 118 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 107 def update_sending_request_to(protocol:, host:, port:, path:) unless @bridge.http&.class&.method_defined? :update_sending_request_to ::Appium::Logger.warn "#{@bridge.http&.class} has no 'update_sending_request_to'. " \ 'It keeps current connection target.' return end @bridge.http&.update_sending_request_to(scheme: protocol, host: host, port: port, path: path) end |
#window_rect ⇒ Selenium::WebDriver::Rectangle
Get the device window’s rect.
884 885 886 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 884 def window_rect manage.window.rect end |
#window_size ⇒ Selenium::WebDriver::Dimension
Get the device window’s size.
870 871 872 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 870 def window_size manage.window.size end |
#within_context(context, &block) ⇒ Object
Perform a block within the given context, then switch back to the starting context.
415 416 417 |
# File 'lib/appium_lib_core/common/base/driver.rb', line 415 def within_context(context, &block) block_given? ? @bridge.within_context(context, &block) : @bridge.within_context(context) end |