Module: Appium::Core::Device

Extended by:
Forwardable
Defined in:
lib/appium_lib_core/common/device.rb,
lib/appium_lib_core/device/app_state.rb,
lib/appium_lib_core/device/screen_record.rb

Defined Under Namespace

Classes: AppState, ScreenRecord

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.add_app_managementObject

rubocop:disable Metrics/ParameterLists,Metrics/PerceivedComplexity,Metrics/CyclomaticComplexity



677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
# File 'lib/appium_lib_core/common/device.rb', line 677

def add_app_management
  add_endpoint_method(:install_app) do
    def install_app(path,
                    replace: nil,
                    timeout: nil,
                    allow_test_packages: nil,
                    use_sdcard: nil,
                    grant_permissions: nil)
      args = { appPath: path }

      args[:options] = {} unless options?(replace, timeout, allow_test_packages, use_sdcard, grant_permissions)

      args[:options][:replace] = replace unless replace.nil?
      args[:options][:timeout] = timeout unless timeout.nil?
      args[:options][:allowTestPackages] = allow_test_packages unless allow_test_packages.nil?
      args[:options][:useSdcard] = use_sdcard unless use_sdcard.nil?
      args[:options][:grantPermissions] = grant_permissions unless grant_permissions.nil?

      execute :install_app, {}, args
    end

    private

    def options?(replace, timeout, allow_test_packages, use_sdcard, grant_permissions)
      replace.nil? || timeout.nil? || allow_test_packages.nil? || use_sdcard.nil? || grant_permissions.nil?
    end
  end

  add_endpoint_method(:remove_app) do
    def remove_app(id, keep_data: nil, timeout: nil)
      # required: [['appId'], ['bundleId']]
      args = { appId: id }

      args[:options] = {} unless keep_data.nil? || timeout.nil?
      args[:options][:keepData] = keep_data unless keep_data.nil?
      args[:options][:timeout] = timeout unless timeout.nil?

      execute :remove_app, {}, args
    end
  end

  add_endpoint_method(:app_installed?) do
    def app_installed?(app_id)
      # required: [['appId'], ['bundleId']]
      execute :app_installed?, {}, bundleId: app_id
    end
  end

  add_endpoint_method(:activate_app) do
    def activate_app(app_id)
      # required: [['appId'], ['bundleId']]
      execute :activate_app, {}, bundleId: app_id
    end
  end

  add_endpoint_method(:terminate_app) do
    def terminate_app(app_id, timeout: nil)
      # required: [['appId'], ['bundleId']]
      #
      args = { appId: app_id }

      args[:options] = {} unless timeout.nil?
      args[:options][:timeout] = timeout unless timeout.nil?

      execute :terminate_app, {}, args
    end
  end

  add_endpoint_method(:app_state) do
    def app_state(app_id)
      # required: [['appId'], ['bundleId']]
      response = execute :app_state, {}, appId: app_id

      case response
      when 0
        Appium::Core::Device::AppState::NOT_INSTALLED
      when 1
        Appium::Core::Device::AppState::NOT_RUNNING
      when 2
        Appium::Core::Device::AppState::RUNNING_IN_BACKGROUND_SUSPENDED
      when 3
        Appium::Core::Device::AppState::RUNNING_IN_BACKGROUND
      when 4
        Appium::Core::Device::AppState::RUNNING_IN_FOREGROUND
      else
        Appium::Logger.debug("Unexpected status in app_state: #{response}")
        response
      end
    end
  end
end

.add_endpoint_method(method) ⇒ Object



640
641
642
643
644
645
# File 'lib/appium_lib_core/common/device.rb', line 640

def add_endpoint_method(method)
  block_given? ? create_bridge_command(method, &Proc.new) : create_bridge_command(method)

  delegate_driver_method method
  delegate_from_appium_driver method
end

.add_handling_contextObject



848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
# File 'lib/appium_lib_core/common/device.rb', line 848

def add_handling_context
  add_endpoint_method(:within_context) do
    def within_context(context)
      existing_context = current_context
      set_context context
      if block_given?
        result = yield
        set_context existing_context
        result
      else
        set_context existing_context
      end
    end
  end

  add_endpoint_method(:switch_to_default_context) do
    def switch_to_default_context
      set_context nil
    end
  end
end

.add_ime_actionsObject



812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
# File 'lib/appium_lib_core/common/device.rb', line 812

def add_ime_actions
  add_endpoint_method(:ime_activate) do
    def ime_activate(ime_name)
      # from Selenium::WebDriver::Remote::OSS
      execute :ime_activate_engine, {}, engine: ime_name
    end
  end

  add_endpoint_method(:ime_available_engines) do
    def ime_available_engines
      execute :ime_get_available_engines
    end
  end

  add_endpoint_method(:ime_active_engine) do
    # from Selenium::WebDriver::Remote::OSS
    def ime_active_engine
      execute :ime_get_active_engine
    end
  end

  add_endpoint_method(:ime_activated) do
    # from Selenium::WebDriver::Remote::OSS
    def ime_activated
      execute :ime_is_activated
    end
  end

  add_endpoint_method(:ime_deactivate) do
    # from Selenium::WebDriver::Remote::OSS
    def ime_deactivate
      execute :ime_deactivate, {}
    end
  end
end

.add_keyeventObject

rubocop:enable Metrics/ParameterLists,Metrics/PerceivedComplexity,Metrics/CyclomaticComplexity



770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
# File 'lib/appium_lib_core/common/device.rb', line 770

def add_keyevent
  # Only for Selendroid
  add_endpoint_method(:keyevent) do
    def keyevent(key, metastate = nil)
      args             = { keycode: key }
      args[:metastate] = metastate if metastate
      execute :keyevent, {}, args
    end
  end

  add_endpoint_method(:press_keycode) do
    def press_keycode(key, metastate = nil)
      args             = { keycode: key }
      args[:metastate] = metastate if metastate
      execute :press_keycode, {}, args
    end
  end

  add_endpoint_method(:long_press_keycode) do
    def long_press_keycode(key, metastate = nil)
      args             = { keycode: key }
      args[:metastate] = metastate if metastate
      execute :long_press_keycode, {}, args
    end
  end
end

.add_screen_recordingObject



870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
# File 'lib/appium_lib_core/common/device.rb', line 870

def add_screen_recording
  add_endpoint_method(:stop_recording_screen) do
    def stop_recording_screen(remote_path: nil, user: nil, pass: nil, method: 'PUT')
      option = ::Appium::Core::Device::ScreenRecord.new(
        remote_path: remote_path, user: user, pass: pass, method: method
      ).upload_option

      params = option.empty? ? {} : { options: option }

      execute(:stop_recording_screen, {}, params)
    end
  end

  add_endpoint_method(:stop_and_save_recording_screen) do
    def stop_and_save_recording_screen(file_path)
      base64data = execute(:stop_recording_screen, {}, {})
      File.open(file_path, 'wb') { |f| f << Base64.decode64(base64data) }
    end
  end
end

.add_touch_actionsObject



797
798
799
800
801
802
803
804
805
806
807
808
809
810
# File 'lib/appium_lib_core/common/device.rb', line 797

def add_touch_actions
  add_endpoint_method(:touch_actions) do
    def touch_actions(actions)
      actions = { actions: [actions].flatten }
      execute :touch_actions, {}, actions
    end
  end

  add_endpoint_method(:multi_touch) do
    def multi_touch(actions)
      execute :multi_touch, {}, actions: actions
    end
  end
end

.create_bridge_command(method) ⇒ Object



667
668
669
670
671
672
673
674
# File 'lib/appium_lib_core/common/device.rb', line 667

def create_bridge_command(method)
  ::Appium::Core::Base::Bridge::MJSONWP.class_eval do
    block_given? ? class_eval(&Proc.new) : define_method(method) { execute method }
  end
  ::Appium::Core::Base::Bridge::W3C.class_eval do
    block_given? ? class_eval(&Proc.new) : define_method(method) { execute method }
  end
end

.delegate_driver_method(method) ⇒ Object



656
657
658
659
# File 'lib/appium_lib_core/common/device.rb', line 656

def delegate_driver_method(method)
  return if ::Appium::Core::Base::Driver.method_defined? method
  ::Appium::Core::Base::Driver.class_eval { def_delegator :@bridge, method }
end

.delegate_from_appium_driver(method, delegation_target = :driver) ⇒ Object



662
663
664
# File 'lib/appium_lib_core/common/device.rb', line 662

def delegate_from_appium_driver(method, delegation_target = :driver)
  def_delegator delegation_target, method
end

.extend_webdriver_with_forwardableObject



648
649
650
651
652
653
# File 'lib/appium_lib_core/common/device.rb', line 648

def extend_webdriver_with_forwardable
  return if ::Appium::Core::Base::Driver.is_a? Forwardable
  ::Appium::Core::Base::Driver.class_eval do
    extend Forwardable
  end
end

.extended(_mod) ⇒ Object



518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
# File 'lib/appium_lib_core/common/device.rb', line 518

def extended(_mod)
  extend_webdriver_with_forwardable

  ::Appium::Core::Commands::COMMAND_NO_ARG.each_key do |method|
    add_endpoint_method method
  end

  add_endpoint_method(:available_contexts) do
    def available_contexts
      # return empty array instead of nil on failure
      execute(:available_contexts, {}) || []
    end
  end

  add_endpoint_method(:app_strings) do
    def app_strings(language = nil)
      opts = language ? { language: language } : {}
      execute :app_strings, {}, opts
    end
  end

  add_endpoint_method(:lock) do
    def lock(duration = nil)
      opts = duration ? { seconds: duration } : {}
      execute :lock, {}, opts
    end
  end

  add_endpoint_method(:background_app) do
    def background_app(duration = 0)
      execute :background_app, {}, seconds: duration
    end
  end

  add_endpoint_method(:set_context) do
    def set_context(context = null)
      execute :set_context, {}, name: context
    end
  end

  add_endpoint_method(:hide_keyboard) do
    def hide_keyboard(close_key = nil, strategy = nil)
      option = {}

      option[:key] = close_key || 'Done'        # default to Done key.
      option[:strategy] = strategy || :pressKey # default to pressKey

      execute :hide_keyboard, {}, option
    end
  end

  add_endpoint_method(:take_element_screenshot) do
    def take_element_screenshot(element, png_path)
      result = execute :take_element_screenshot, id: element.ref

      extension = File.extname(png_path).downcase
      if extension != '.png'
        WebDriver.logger.warn 'name used for saved screenshot does not match file type. '\
                        'It should end with .png extension'
      end
      File.open(png_path, 'wb') { |f| f << result.unpack('m')[0] }
    end
  end

  add_endpoint_method(:set_immediate_value) do
    def set_immediate_value(element, *value)
      keys = ::Selenium::WebDriver::Keys.encode(value)
      execute :set_immediate_value, { id: element.ref }, value: Array(keys)
    end
  end

  add_endpoint_method(:replace_value) do
    def replace_value(element, *value)
      keys = ::Selenium::WebDriver::Keys.encode(value)
      execute :replace_value, { id: element.ref }, value: Array(keys)
    end
  end

  add_endpoint_method(:push_file) do
    def push_file(path, filedata)
      encoded_data = Base64.encode64 filedata
      execute :push_file, {}, path: path, data: encoded_data
    end
  end

  add_endpoint_method(:pull_file) do
    def pull_file(path)
      data = execute :pull_file, {}, path: path
      Base64.decode64 data
    end
  end

  add_endpoint_method(:pull_folder) do
    def pull_folder(path)
      data = execute :pull_folder, {}, path: path
      Base64.decode64 data
    end
  end

  add_endpoint_method(:get_settings) do
    def get_settings
      execute :get_settings, {}
    end
  end

  add_endpoint_method(:update_settings) do
    def update_settings(settings)
      execute :update_settings, {}, settings: settings
    end
  end

  add_keyevent
  add_touch_actions
  add_ime_actions
  add_handling_context
  add_screen_recording
  add_app_management
end

Instance Method Details

#activate_app(app_id) ⇒ Hash

Activate(Launch) the specified app.

Examples:


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

Returns:

  • (Hash)


# File 'lib/appium_lib_core/common/device.rb', line 222

#app_installed?(app_id) ⇒ Boolean

Check whether the specified app is installed on the device

Examples:


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

Returns:

  • (Boolean)


# File 'lib/appium_lib_core/common/device.rb', line 200

#app_strings(language = nil) ⇒ Hash

Return the hash of all localization strings.

Examples:


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

Returns:

  • (Hash)


# File 'lib/appium_lib_core/common/device.rb', line 249

#available_contextsArray<String>

Returns All usable contexts, as an array of strings.

Examples:


@driver.available_contexts

Returns:

  • (Array<String>)

    All usable contexts, as an array of strings.



# File 'lib/appium_lib_core/common/device.rb', line 451

#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

Parameters:

  • duration (Integer) (defaults to: 0)

    How many seconds to background the app for.

Returns:

  • (String)


# File 'lib/appium_lib_core/common/device.rb', line 269

#close_appObject

Close an app on device

Examples:


@driver.close_app


# File 'lib/appium_lib_core/common/device.rb', line 66

#current_activityString

Get current activity name

Examples:


@driver.current_activity # '.ApiDemos'

Returns:

  • (String)

    An activity name



# File 'lib/appium_lib_core/common/device.rb', line 14

#current_contextString

Returns The context currently being used.

Examples:


@driver.current_context

Returns:

  • (String)

    The context currently being used.



# File 'lib/appium_lib_core/common/device.rb', line 443

#current_packageString

Get current package name

Examples:


@driver.current_package # 'com.example.android.apis'

Returns:

  • (String)

    A package name



# File 'lib/appium_lib_core/common/device.rb', line 23

#device_locked?Object

Check current device status is weather locked or not

Examples:


@driver.device_locked?


# File 'lib/appium_lib_core/common/device.rb', line 106

#device_timeObject

Get the time on the device



# File 'lib/appium_lib_core/common/device.rb', line 132

#get_display_densityInteger

Get connected device’s density.

Examples:


@driver.get_display_density # 320

Returns:

  • (Integer)

    The size of density



# File 'lib/appium_lib_core/common/device.rb', line 41

#get_network_connectionObject

Get the device network connection current status See set_network_connection method for return value



# File 'lib/appium_lib_core/common/device.rb', line 114

#get_settingsObject

Get appium Settings for current test session

Examples:


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


# File 'lib/appium_lib_core/common/device.rb', line 360

#get_system_barsString

Get system bar’s information

Examples:


@driver.get_system_bars

Returns:

  • (String)


# File 'lib/appium_lib_core/common/device.rb', line 32

#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

Parameters:

  • close_key (String) (defaults to: nil)

    The name of the key which closes the keyboard. Defaults to ‘Done’ for iOS(except for XCUITest).

  • strategy (Symbol) (defaults to: nil)

    The symbol of the strategy which closes the keyboard. XCUITest ignore this argument. Default for iOS is ‘:pressKey`. Default for Android is `:tapOutside`.



# File 'lib/appium_lib_core/common/device.rb', line 282

#ime_activate(ime_name) ⇒ Object

Android only. Make an engine that is available active.

Examples:


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

Parameters:

  • ime_name (String)

    The IME owning the activity [required]



# File 'lib/appium_lib_core/common/device.rb', line 393

#ime_activatedObject

Android only. Indicates whether IME input is active at the moment (not if it is available).



# File 'lib/appium_lib_core/common/device.rb', line 418

#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'


# File 'lib/appium_lib_core/common/device.rb', line 410

#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


# File 'lib/appium_lib_core/common/device.rb', line 402

#ime_deactivateObject

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

Examples:


ime_deactivate #=> Deactivate current IME engine


# File 'lib/appium_lib_core/common/device.rb', line 426

#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)

Parameters:

  • path (String)

    The absolute local path or remote http URL to an .ipa or .apk file, or a .zip containing one of these.

  • replace: (Boolean) (defaults to: nil)

    Only for Android. Whether to reinstall/upgrade the package if it is already present on the device under test. ‘true` by default

  • timeout: (Integer) (defaults to: nil)

    Only for Android. How much time to wait for the installation to complete. 60000ms by default.

  • allow_test_packages: (Boolean) (defaults to: nil)

    Only for Android. Whether to allow installation of packages marked as test in the manifest. ‘false` by default

  • use_sdcard: (Boolean) (defaults to: nil)

    Only for Android. Whether to use the SD card to install the app. ‘false` by default

  • grant_permissions: (Boolean) (defaults to: nil)

    Only for Android. whether to automatically grant application permissions on Android 6+ after the installation completes. ‘false` by default



# File 'lib/appium_lib_core/common/device.rb', line 172

#is_keyboard_shownBoolean

Get whether keyboard is displayed or not.

Examples:

@driver.is_keyboard_shown # false

Returns:

  • (Boolean)

    Return true if keyboard is shown. Return false if keyboard is hidden.



# File 'lib/appium_lib_core/common/device.rb', line 50

#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

Parameters:

  • key (integer)

    The key to press.

  • metastate (String) (defaults to: nil)

    The state the metakeys should be in when pressing the key.



# File 'lib/appium_lib_core/common/device.rb', line 297

#launch_appObject

Start the simulator and application configured with desired capabilities

Examples:


@driver.launch_app


# File 'lib/appium_lib_core/common/device.rb', line 58

#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.

Returns:

  • (String)


# File 'lib/appium_lib_core/common/device.rb', line 258

#long_press_keycode(key, metastate = nil) ⇒ Object

Examples:


@driver.long_press_keycode 82

Parameters:

  • key (integer)

    The key to long press.

  • metastate (String) (defaults to: nil)

    The state the metakeys should be in when long pressing the key.



# File 'lib/appium_lib_core/common/device.rb', line 319

#open_notificationsObject

Open Android notifications



# File 'lib/appium_lib_core/common/device.rb', line 124

#press_keycode(key, metastate = nil) ⇒ Object

Examples:


@driver.press_keycode 82

Parameters:

  • key (integer)

    The key to press.

  • metastate (String) (defaults to: nil)

    The state the metakeys should be in when pressing the key.



# File 'lib/appium_lib_core/common/device.rb', line 308

#pull_file(path) ⇒ Object

Retrieve a file from the device. This can retrieve an absolute path or a path relative to the installed app (iOS only).

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

Parameters:

  • path (String)

    Either an absolute path OR, for iOS devices, a path relative to the app, as described.



# File 'lib/appium_lib_core/common/device.rb', line 340

#pull_folder(path) ⇒ Object

Retrieve a folder from the device.

Examples:


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

Parameters:

  • path (String)

    absolute path to the folder



# File 'lib/appium_lib_core/common/device.rb', line 351

#push_file(path, filedata) ⇒ Object

Place a file in a specific location on the device.

Examples:


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

Parameters:

  • path (String)

    The absolute path on the device to store data at.

  • filedata (String)

    Raw file data to be sent to the device. Converted to base64 in the method.



# File 'lib/appium_lib_core/common/device.rb', line 330

#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)

Parameters:

  • app_id (Strong)

    BundleId for iOS or package name for Android

  • keep_data: (Boolean) (defaults to: nil)

    Only for Android. Whether to keep application data and caches after it is uninstalled. ‘false` by default

  • timeout: (Integer) (defaults to: nil)

    Only for Android. How much time to wait for the uninstall to complete. 20000ms by default.



# File 'lib/appium_lib_core/common/device.rb', line 188

#replace_value(element, *value) ⇒ Object

Replace the value to element directly



# File 'lib/appium_lib_core/common/device.rb', line 385

#resetObject

Reset the device, relaunching the application.

Examples:


@driver.reset


# File 'lib/appium_lib_core/common/device.rb', line 74

#set_context(context) ⇒ Object

Change the context to the given context.

Examples:


@driver.set_context "NATIVE_APP"

Parameters:

  • context (String)

    The context to change to



# File 'lib/appium_lib_core/common/device.rb', line 434

#set_immediate_value(element, *value) ⇒ Object

Set the value to element directly



# File 'lib/appium_lib_core/common/device.rb', line 377

#shakeObject

Cause the device to shake

Examples:


@driver.shake


# File 'lib/appium_lib_core/common/device.rb', line 82

#stop_and_save_recording_screen(file_path) ⇒ Object

Examples:


@driver.stop_and_save_recording_screen 'example.mp4'

Parameters:

  • file_path (String)

    The path to save video decoded from base64 from Appium server.



# File 'lib/appium_lib_core/common/device.rb', line 503

#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'

Parameters:

  • remote_path: (String) (defaults to: nil)

    The path to the remote location, where the resulting video should be uploaded. The following protocols are supported: http/https, ftp. Null or empty string value (the default setting) means the content of resulting file should be encoded as Base64 and passed as the endpoint response value. An exception will be thrown if the generated media file is too big to fit into the available process memory.

  • user: (String) (defaults to: nil)

    The name of the user for the remote authentication.

  • pass: (String) (defaults to: nil)

    The password for the remote authentication.

  • method: (String) (defaults to: 'PUT')

    The http multipart upload method name. The ‘PUT’ one is used by default.



# File 'lib/appium_lib_core/common/device.rb', line 486

#take_element_screenshot(element, png_path) ⇒ File

Returns Path to the screenshot.

Examples:


@driver.take_element_screenshot(element, "fine_name.png")

Parameters:

Returns:

  • (File)

    Path to the screenshot.



# File 'lib/appium_lib_core/common/device.rb', line 476

#terminate_app(app_id) ⇒ Boolean

Terminate the specified app.

Examples:


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

Parameters:

  • app_id (Strong)

    BundleId for iOS or package name for Android

  • timeout: (Integer)

    Only for Android. How much time to wait for the application termination to complete. 500ms by default.

Returns:

  • (Boolean)


# File 'lib/appium_lib_core/common/device.rb', line 209

#toggle_dataObject

Switch the state of data service



# File 'lib/appium_lib_core/common/device.rb', line 159

#toggle_flight_modeObject

Toggle flight mode on or off

Examples:


@driver.toggle_flight_mode


# File 'lib/appium_lib_core/common/device.rb', line 90

#toggle_location_servicesObject

Switch the state of the location service



# File 'lib/appium_lib_core/common/device.rb', line 141

#toggle_wifiObject

Switch the state of the wifi service



# File 'lib/appium_lib_core/common/device.rb', line 150

#unlockObject

Unlock the device

Examples:


@driver.unlock


# File 'lib/appium_lib_core/common/device.rb', line 98

#update_settings(settings) ⇒ Object

Update Appium Settings for current test session

Examples:


@driver.update_settings('allowInvisibleElements': true)

Parameters:

  • settings (Hash)

    Settings to update, keys are settings, values to value to set each setting to



# File 'lib/appium_lib_core/common/device.rb', line 368