Class: Appium::Core::Base::Driver

Inherits:
Selenium::WebDriver::Driver
  • Object
show all
Includes:
SearchContext, TakeScreenshot, Selenium::WebDriver::DriverExtensions::HasRemoteStatus, Selenium::WebDriver::DriverExtensions::HasSessionId, Selenium::WebDriver::DriverExtensions::HasWebStorage, Selenium::WebDriver::DriverExtensions::Rotatable, Selenium::WebDriver::DriverExtensions::UploadsFiles
Defined in:
lib/appium_lib_core/common/base/driver.rb

Constant Summary collapse

DEFAULT_MATCH_THRESHOLD =
0.5

Constants included from SearchContext

SearchContext::FINDERS

Instance Method Summary collapse

Methods included from TakeScreenshot

#element_screenshot_as, #save_element_screenshot, #save_screenshot, #save_viewport_screenshot, #screenshot_as

Methods included from SearchContext

#find_element, #find_elements

Constructor Details

#initialize(opts = {}) ⇒ Driver



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/appium_lib_core/common/base/driver.rb', line 18

def initialize(opts = {})
  listener = opts.delete(:listener)
  @bridge = ::Appium::Core::Base::Bridge.handshake(opts)
  if @bridge.dialect == :oss # MJSONWP
    extend ::Selenium::WebDriver::DriverExtensions::HasTouchScreen
    extend ::Selenium::WebDriver::DriverExtensions::HasLocation
    extend ::Selenium::WebDriver::DriverExtensions::HasNetworkConnection
  elsif @bridge.dialect == :w3c
    # TODO: Only for Appium. Ideally, we'd like to remove the below like selenium-webdriver
    extend ::Selenium::WebDriver::DriverExtensions::HasTouchScreen
    extend ::Selenium::WebDriver::DriverExtensions::HasLocation
    extend ::Selenium::WebDriver::DriverExtensions::HasNetworkConnection
  end
  super(@bridge, listener: listener)
end

Instance Method Details

#activate_app(app_id) ⇒ Hash

Activate(Launch) the specified app.

Examples:


@driver.activate_app("io.appium.bundle") #=> {}


519
520
521
# File 'lib/appium_lib_core/common/base/driver.rb', line 519

def activate_app(app_id)
  @bridge.activate_app(app_id)
end

#app_installed?(app_id) ⇒ Boolean

Check whether the specified app is installed on the device

Examples:


@driver.app_installed?("io.appium.bundle")


508
509
510
# File 'lib/appium_lib_core/common/base/driver.rb', line 508

def app_installed?(app_id)
  @bridge.app_installed?(app_id)
end

#app_state(app_id) ⇒ AppState::STATUS

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

Examples:


@driver.app_state("io.appium.bundle") #=> :not_running


556
557
558
# File 'lib/appium_lib_core/common/base/driver.rb', line 556

def app_state(app_id)
  @bridge.app_state(app_id)
end

#app_strings(language = nil) ⇒ Hash

Return the hash of all localization strings.

Examples:


@driver.app_strings #=> "TransitionsTitle"=>"Transitions", "WebTitle"=>"Web"


434
435
436
# File 'lib/appium_lib_core/common/base/driver.rb', line 434

def app_strings(language = nil)
  @bridge.app_strings(language)
end

#available_contextsArray<String>

Returns All usable contexts, as an array of strings.

Examples:


@driver.available_contexts


228
229
230
# File 'lib/appium_lib_core/common/base/driver.rb', line 228

def available_contexts
  @bridge.available_contexts
end

#backString

Get the device window’s size.

Examples:

@driver.back # back to the previous view


690
691
692
# File 'lib/appium_lib_core/common/base/driver.rb', line 690

def back
  navigate.back
end

#background_app(duration = 0) ⇒ String

Backgrounds the app for a set number of seconds. This is a blocking application

Examples:


@driver.background_app
@driver.background_app(5)
@driver.background_app(-1) #=> the app never come back. https://github.com/appium/appium/issues/7741


449
450
451
# File 'lib/appium_lib_core/common/base/driver.rb', line 449

def background_app(duration = 0)
  @bridge.background_app(duration)
end

#close_appObject

Close an app on device

Examples:


@driver.close_app


413
414
415
# File 'lib/appium_lib_core/common/base/driver.rb', line 413

def close_app
  @bridge.close_app
end

#compare_images(mode: :matchFeatures, first_image:, second_image:, options: nil) ⇒ Object



835
836
837
# File 'lib/appium_lib_core/common/base/driver.rb', line 835

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: options)
end

#context=(context = null) ⇒ Object Also known as: set_context

Change the context to the given context.

Examples:


@driver.set_context "NATIVE_APP"
@driver.context = "NATIVE_APP"


240
241
242
# File 'lib/appium_lib_core/common/base/driver.rb', line 240

def context=(context = null)
  @bridge.set_context(context)
end

#current_contextString

Returns The context currently being used.

Examples:


@driver.current_context


218
219
220
# File 'lib/appium_lib_core/common/base/driver.rb', line 218

def current_context
  @bridge.current_context
end

#device_locked?Boolean

Check current device status is weather locked or not

Examples:


@driver.device_locked?


61
62
63
# File 'lib/appium_lib_core/common/base/driver.rb', line 61

def device_locked?
  @bridge.device_locked?
end

#device_time(format = nil) ⇒ String

Get the time on the device

Examples:


@driver.device_time #=> "2018-06-12T11:13:31+02:00"
@driver.device_time "YYYY-MM-DD" #=> "2018-06-12"


611
612
613
# File 'lib/appium_lib_core/common/base/driver.rb', line 611

def device_time(format = nil)
  @bridge.device_time(format)
end

#dialect:oss|:w3c

Get the dialect value



36
37
38
# File 'lib/appium_lib_core/common/base/driver.rb', line 36

def dialect
  @bridge.dialect
end

#find_element_by_image(img_path) ⇒ ::Selenium::WebDriver::Element

Return an element if current view has a partial image. The logic depends on template matching by OpenCV. You can handle settings for the comparision following below.

Examples:


@@driver.update_settings({ fixImageFindScreenshotDims: false, fixImageTemplateSize: true,
                           autoUpdateImageElementPosition: true })
e = @@driver.find_element_by_image './test/functional/data/test_element_image.png'

See Also:

Since:

  • Appium 1.8.2



855
856
857
858
# File 'lib/appium_lib_core/common/base/driver.rb', line 855

def find_element_by_image(img_path)
  template = Base64.encode64 File.read img_path
  find_element :image, template
end

#find_elements_by_image(img_path) ⇒ ::Selenium::WebDriver::Element

Return elements if current view has a partial image. The logic depends on template matching by OpenCV. You can handle settings for the comparision following below.

Examples:


@@driver.update_settings({ fixImageFindScreenshotDims: false, fixImageTemplateSize: true,
                           autoUpdateImageElementPosition: true })
e = @@driver.find_elements_by_image ['./test/functional/data/test_element_image.png']
e == [] # if the `e` is empty

See Also:

Since:

  • Appium 1.8.2



877
878
879
880
# File 'lib/appium_lib_core/common/base/driver.rb', line 877

def find_elements_by_image(img_path)
  template = Base64.encode64 File.read img_path
  find_elements :image, template
end

#find_image_occurrence(full_image:, partial_image:, visualize: false, threshold: nil) ⇒ Object



824
825
826
827
828
829
# File 'lib/appium_lib_core/common/base/driver.rb', line 824

def find_image_occurrence(full_image:, partial_image:, visualize: false, threshold: nil)
  @bridge.find_image_occurrence(full_image: full_image,
                                partial_image: partial_image,
                                visualize: visualize,
                                threshold: threshold)
end

#get_images_similarity(first_image:, second_image:, visualize: false) ⇒ Object



831
832
833
# File 'lib/appium_lib_core/common/base/driver.rb', line 831

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_settingsObject

Get appium Settings for current test session

Examples:


@driver.get_settings


122
123
124
# File 'lib/appium_lib_core/common/base/driver.rb', line 122

def get_settings
  @bridge.get_settings
end

#get_timeoutsHash

For W3C. Get the timeout related settings on the server side.

Examples:

@driver.get_timeouts


714
715
716
# File 'lib/appium_lib_core/common/base/driver.rb', line 714

def get_timeouts
  @bridge.get_timeouts
end

#hide_keyboard(close_key = nil, strategy = nil) ⇒ Object

Hide the onscreen keyboard

Examples:


@driver.hide_keyboard # Close a keyboard with the 'Done' button
@driver.hide_keyboard('Finished') # Close a keyboard with the 'Finished' button
@driver.hide_keyboard(nil, :tapOutside) # Close a keyboard with tapping out side of keyboard


88
89
90
# File 'lib/appium_lib_core/common/base/driver.rb', line 88

def hide_keyboard(close_key = nil, strategy = nil)
  @bridge.hide_keyboard close_key, strategy
end

#ime_activate(ime_name) ⇒ Object

Android only. Make an engine that is available active.

Examples:


ime_activate engine: 'com.android.inputmethod.latin/.LatinIME'


144
145
146
# File 'lib/appium_lib_core/common/base/driver.rb', line 144

def ime_activate(ime_name)
  @bridge.ime_activate(ime_name)
end

#ime_activatedObject

Examples:


ime_activated #=> True if IME is activated


175
176
177
# File 'lib/appium_lib_core/common/base/driver.rb', line 175

def ime_activated
  @bridge.ime_activated
end

#ime_active_engineObject

Android only. Get the name of the active IME engine.

Examples:


ime_active_engine #=> Get the current active IME such as 'com.android.inputmethod.latin/.LatinIME'


164
165
166
# File 'lib/appium_lib_core/common/base/driver.rb', line 164

def ime_active_engine
  @bridge.ime_active_engine
end

#ime_available_enginesObject

Android only. List all available input engines on the machine.

Examples:


ime_available_engines #=> Get the list of IME installed in the target device


154
155
156
# File 'lib/appium_lib_core/common/base/driver.rb', line 154

def ime_available_engines
  @bridge.ime_available_engines
end

#ime_deactivateObject

Android only. De-activates the currently-active IME engine.

Examples:


ime_deactivate #=> Deactivate current IME engine


185
186
187
# File 'lib/appium_lib_core/common/base/driver.rb', line 185

def ime_deactivate
  @bridge.ime_deactivate
end

#install_app(path, replace: nil, timeout: nil, allow_test_packages: nil, use_sdcard: nil, grant_permissions: nil) ⇒ Object

Install the given app onto the device

Examples:


@driver.install_app("/path/to/test.apk")
@driver.install_app("/path/to/test.apk", replace: true, timeout: 20000, allow_test_packages: true,
                    use_sdcard: false, grant_permissions: false)


473
474
475
476
477
478
479
480
481
482
483
484
485
# File 'lib/appium_lib_core/common/base/driver.rb', line 473

def install_app(path,
                replace: nil,
                timeout: nil,
                allow_test_packages: nil,
                use_sdcard: nil,
                grant_permissions: nil)
  @bridge.install_app(path,
                      replace: replace,
                      timeout: timeout,
                      allow_test_packages: allow_test_packages,
                      use_sdcard: use_sdcard,
                      grant_permissions: grant_permissions)
end

#keyboard_shown?Boolean Also known as: is_keyboard_shown

Get whether keyboard is displayed or not.

Examples:

@driver.is_keyboard_shown # false
@driver.keyboard_shown?   # true


99
100
101
# File 'lib/appium_lib_core/common/base/driver.rb', line 99

def keyboard_shown?
  @bridge.is_keyboard_shown
end

#keyevent(key, metastate = nil) ⇒ Object

Send keyevent on the device.(Only for Selendroid) developer.android.com/reference/android/view/KeyEvent.html

Examples:


@driver.keyevent 82


349
350
351
# File 'lib/appium_lib_core/common/base/driver.rb', line 349

def keyevent(key, metastate = nil)
  @bridge.keyevent(key, metastate)
end

#launch_appObject

Start the simulator and application configured with desired capabilities

Examples:


@driver.launch_app


403
404
405
# File 'lib/appium_lib_core/common/base/driver.rb', line 403

def launch_app
  @bridge.launch_app
end

#lock(duration = nil) ⇒ String

Lock the device

Examples:


@driver.lock    #=> Lock the device
@driver.lock(5) #=> Lock the device in 5 sec and unlock the device after 5 sec.
                #   Block other commands during locking the device.


51
52
53
# File 'lib/appium_lib_core/common/base/driver.rb', line 51

def lock(duration = nil)
  @bridge.lock(duration)
end

#logsString

Get the device window’s logs.

Examples:


@driver.logs.available_types # [:syslog, :crashlog, :performance]
@driver.logs.get :syslog # []


702
703
704
# File 'lib/appium_lib_core/common/base/driver.rb', line 702

def logs
  @logs ||= Logs.new(@bridge)
end

#long_press_keycode(key, metastate: [], flags: []) ⇒ Object

Examples:


@driver.long_press_keycode 66
@driver.long_press_keycode 66, flags: [0x20, 0x2000]
@driver.long_press_keycode 66, metastate: [1], flags: [32, 8192]


393
394
395
# File 'lib/appium_lib_core/common/base/driver.rb', line 393

def long_press_keycode(key, metastate: [], flags: [])
  @bridge.long_press_keycode(key, metastate: 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



810
811
812
813
814
815
816
817
818
819
820
821
822
# File 'lib/appium_lib_core/common/base/driver.rb', line 810

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



620
621
622
# File 'lib/appium_lib_core/common/base/driver.rb', line 620

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 = @driver.action.add_pointer_input(:touch, '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 = @driver.action.add_pointer_input(:touch, '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

Raises:

  • (ArgumentError)


650
651
652
653
654
655
656
# File 'lib/appium_lib_core/common/base/driver.rb', line 650

def perform_actions(data)
  raise ArgumentError, "'#{data}' must be Array" unless data.is_a? Array

  @bridge.send_actions data.map(&:encode).compact
  data.each(&:clear_actions)
  nil
end

#press_keycode(key, metastate: [], flags: []) ⇒ Object

Examples:


@driver.press_keycode 66
@driver.press_keycode 66, flags: [0x02]
@driver.press_keycode 66, metastate: [1], flags: [32]


371
372
373
# File 'lib/appium_lib_core/common/base/driver.rb', line 371

def press_keycode(key, metastate: [], flags: [])
  @bridge.press_keycode(key, metastate: metastate, flags: flags)
end

#pull_file(path) ⇒ Base64-decoded

Pull a file from the simulator/device. On iOS the server should have ifuse libraries installed and configured properly for this feature to work on real devices. 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.

Examples:


@driver.pull_file '/local/data/some/path'     #=> Get the file at that path
@driver.pull_file 'Shenanigans.app/some/file' #=> Get 'some/file' from the install location of Shenanigans.app

See Also:



310
311
312
# File 'lib/appium_lib_core/common/base/driver.rb', line 310

def pull_file(path)
  @bridge.pull_file(path)
end

#pull_folder(path) ⇒ Base64-decoded

Pull a folder content from the simulator/device. On iOS the server should have ifuse libraries installed and configured properly for this feature to work on real devices. 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.

Examples:


@driver.pull_folder '/data/local/tmp' #=> Get the folder at that path

See Also:



336
337
338
# File 'lib/appium_lib_core/common/base/driver.rb', line 336

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 iOS, the server should have ifuse libraries installed and configured properly for this feature to work on real devices. 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.

Examples:


@driver.push_file "/file/to/path", "data"

See Also:



284
285
286
# File 'lib/appium_lib_core/common/base/driver.rb', line 284

def push_file(path, filedata)
  @bridge.push_file(path, filedata)
end

#remove_app(app_id, keep_data: nil, timeout: nil) ⇒ Object

Examples:


@driver.remove_app("io.appium.bundle")
@driver.remove_app("io.appium.bundle", keep_data: false, timeout, 10000)


497
498
499
# File 'lib/appium_lib_core/common/base/driver.rb', line 497

def remove_app(app_id, keep_data: nil, timeout: nil)
  @bridge.remove_app(app_id, keep_data: keep_data, timeout: timeout)
end

#replace_value(element, *value) ⇒ Object

Replace the value to element directly

Examples:


replace_value element, 'hello'


261
262
263
# File 'lib/appium_lib_core/common/base/driver.rb', line 261

def replace_value(element, *value)
  @bridge.replace_value(element, *value)
end

#resetObject

Reset the device, relaunching the application.

Examples:


@driver.reset


423
424
425
# File 'lib/appium_lib_core/common/base/driver.rb', line 423

def reset
  @bridge.reset
end

#send_keys(*key) ⇒ Object Also known as: type

Send keys for a current active element

Examples:


@driver.send_keys 'happy testing!'


111
112
113
# File 'lib/appium_lib_core/common/base/driver.rb', line 111

def send_keys(*key)
  @bridge.send_keys_to_active_element(key)
end

#session_capabilitiesSelenium::WebDriver::Remote::Capabilities

Retrieve the capabilities of the specified session. It’s almost same as ‘@driver.capabilities` but you can get more details.

Examples:

@driver.session_capabilities

#=> uiautomator2
# <Selenium::WebDriver::Remote::W3C::Capabilities:0x007fa38dae1360
# @capabilities=
#     {:proxy=>nil,
#      :browser_name=>nil,
#      :browser_version=>nil,
#      :platform_name=>"android",
#      :page_load_strategy=>nil,
#      :remote_session_id=>nil,
#      :accessibility_checks=>nil,
#      :profile=>nil,
#      :rotatable=>nil,
#      :device=>nil,
#      "platform"=>"LINUX",
#      "webStorageEnabled"=>false,
#      "takesScreenshot"=>true,
#      "javascriptEnabled"=>true,
#      "databaseEnabled"=>false,
#      "networkConnectionEnabled"=>true,
#      "locationContextEnabled"=>false,
#      "warnings"=>{},
#      "desired"=>
#          {"platformName"=>"android",
#           "automationName"=>"uiautomator2",
#           "app"=>"/path/to/app/api.apk",
#           "platformVersion"=>"8.1.0",
#           "deviceName"=>"Android Emulator",
#           "appPackage"=>"io.appium.android.apis",
#           "appActivity"=>"io.appium.android.apis.ApiDemos",
#           "someCapability"=>"some_capability",
#           "unicodeKeyboard"=>true,
#           "resetKeyboard"=>true},
#      "automationName"=>"uiautomator2",
#      "app"=>"/path/to/app/api.apk",
#      "platformVersion"=>"8.1.0",
#      "deviceName"=>"emulator-5554",
#      "appPackage"=>"io.appium.android.apis",
#      "appActivity"=>"io.appium.android.apis.ApiDemos",
#      "someCapability"=>"some_capability",
#      "unicodeKeyboard"=>true,
#      "resetKeyboard"=>true,
#      "deviceUDID"=>"emulator-5554",
#      "deviceScreenSize"=>"1080x1920",
#      "deviceScreenDensity"=>420,
#      "deviceModel"=>"Android SDK built for x86",
#      "deviceManufacturer"=>"Google",
#      "pixelRatio"=>2.625,
#      "statBarHeight"=>63,
#      "viewportRect"=>{"left"=>0, "top"=>63, "width"=>1080, "height"=>1731}}>
#
#=> XCUITest
# <Selenium::WebDriver::Remote::W3C::Capabilities:0x007fb15dc01370
# @capabilities=
#     {:proxy=>nil,
#      :browser_name=>"UICatalog",
#      :browser_version=>nil,
#      :platform_name=>"ios",
#      :page_load_strategy=>nil,
#      :remote_session_id=>nil,
#      :accessibility_checks=>nil,
#      :profile=>nil,
#      :rotatable=>nil,
#      :device=>"iphone",
#      "udid"=>"DED4DBAD-8E5E-4AD6-BDC4-E75CF9AD84D8",
#      "automationName"=>"XCUITest",
#      "app"=>"/path/to/app/UICatalog.app",
#      "platformVersion"=>"10.3",
#      "deviceName"=>"iPhone Simulator",
#      "useNewWDA"=>true,
#      "useJSONSource"=>true,
#      "someCapability"=>"some_capability",
#      "sdkVersion"=>"10.3.1",
#      "CFBundleIdentifier"=>"com.example.apple-samplecode.UICatalog",
#      "pixelRatio"=>2,
#      "statBarHeight"=>23.4375,
#      "viewportRect"=>{"left"=>0, "top"=>47, "width"=>750, "height"=>1287}}>


803
804
805
# File 'lib/appium_lib_core/common/base/driver.rb', line 803

def session_capabilities
  @bridge.session_capabilities
end

#set_immediate_value(element, *value) ⇒ Object

Set the value to element directly

Examples:


@driver.set_immediate_value element, 'hello'


251
252
253
# File 'lib/appium_lib_core/common/base/driver.rb', line 251

def set_immediate_value(element, *value)
  @bridge.set_immediate_value(element, *value)
end

#shakeObject

Cause the device to shake

Examples:


@driver.shake


595
596
597
# File 'lib/appium_lib_core/common/base/driver.rb', line 595

def shake
  @bridge.shake
end

#stop_and_save_recording_screen(file_path) ⇒ Object

Examples:


@driver.stop_and_save_recording_screen 'example.mp4'


585
586
587
# File 'lib/appium_lib_core/common/base/driver.rb', line 585

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

Examples:


@driver.stop_recording_screen
@driver.stop_recording_screen remote_path: 'https://example.com', user: 'example', pass: 'pass', method: 'POST'


575
576
577
# File 'lib/appium_lib_core/common/base/driver.rb', line 575

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_contextObject

Change to the default context. This is equivalent to ‘set_context nil`.

Examples:


@driver.switch_to_default_context


208
209
210
# File 'lib/appium_lib_core/common/base/driver.rb', line 208

def switch_to_default_context
  @bridge.switch_to_default_context
end

#terminate_app(app_id, timeout: nil) ⇒ Boolean

Terminate the specified app.

Examples:


@driver.terminate_app("io.appium.bundle") # true
@driver.terminate_app("io.appium.bundle", timeout: 500)


535
536
537
# File 'lib/appium_lib_core/common/base/driver.rb', line 535

def terminate_app(app_id, timeout: nil)
  @bridge.terminate_app(app_id, timeout: timeout)
end

#touch_actions(actions) ⇒ Object

touch actions



616
617
618
# File 'lib/appium_lib_core/common/base/driver.rb', line 616

def touch_actions(actions)
  @bridge.touch_actions(actions)
end

#unlockObject

Unlock the device

Examples:


@driver.unlock


71
72
73
# File 'lib/appium_lib_core/common/base/driver.rb', line 71

def unlock
  @bridge.unlock
end

#update_settings(settings) ⇒ Object

Update Appium Settings for current test session

Examples:


@driver.update_settings('allowInvisibleElements': true)


133
134
135
# File 'lib/appium_lib_core/common/base/driver.rb', line 133

def update_settings(settings)
  @bridge.update_settings(settings)
end

#window_rectSelenium::WebDriver::Rectangle

Get the device window’s rect.

Examples:

size = @driver.window_rect
size.width #=> Integer
size.height #=> Integer
size.x #=> 0
size.y #=> 0


680
681
682
# File 'lib/appium_lib_core/common/base/driver.rb', line 680

def window_rect
  manage.window.rect
end

#window_sizeSelenium::WebDriver::Dimension

Get the device window’s size.

Examples:

size = @driver.window_size
size.width #=> Integer
size.height #=> Integer


666
667
668
# File 'lib/appium_lib_core/common/base/driver.rb', line 666

def window_size
  manage.window.size
end

#within_context(context) ⇒ Object

Perform a block within the given context, then switch back to the starting context.

Examples:


result = @driver.within_context('NATIVE_APP') do
  @driver.find_element :tag, "button"
end # The result of `find_element :tag, "button"`


198
199
200
# File 'lib/appium_lib_core/common/base/driver.rb', line 198

def within_context(context)
  block_given? ? @bridge.within_context(context, &Proc.new) : @bridge.within_context(context)
end