Module: Appium::Android::Device

Extended by:
Forwardable
Defined in:
lib/appium_lib_core/android/device.rb,
lib/appium_lib_core/android/device/emulator.rb

Defined Under Namespace

Modules: Emulator

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.extended(_mod) ⇒ Object



123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
# File 'lib/appium_lib_core/android/device.rb', line 123

def extended(_mod)
  Appium::Core::Device.extend_webdriver_with_forwardable

  # Android
  Appium::Core::Device.add_endpoint_method(:start_activity) do
    def start_activity(opts)
      raise 'opts must be a hash' unless opts.is_a? Hash
      app_package = opts[:app_package]
      raise 'app_package is required' unless app_package
      app_activity = opts[:app_activity]
      raise 'app_activity is required' unless app_activity
      app_wait_package  = opts.fetch(:app_wait_package, '')
      app_wait_activity = opts.fetch(:app_wait_activity, '')

      unknown_opts = opts.keys - i(app_package app_activity app_wait_package app_wait_activity)
      raise "Unknown options #{unknown_opts}" unless unknown_opts.empty?

      execute :start_activity, {}, appPackage: app_package,
                                   appActivity: app_activity,
                                   appWaitPackage: app_wait_package,
                                   appWaitActivity: app_wait_activity
    end
  end

  # Android, Override
  Appium::Core::Device.add_endpoint_method(:hide_keyboard) do
    def hide_keyboard(close_key = nil, strategy = nil)
      option = {}

      option[:key] = close_key if close_key
      option[:strategy] = strategy || :tapOutside # default to pressKey

      execute :hide_keyboard, {}, option
    end
  end

  # TODO: TEST ME
  Appium::Core::Device.add_endpoint_method(:end_coverage) do
    def end_coverage(path, intent)
      execute :end_coverage, {}, path: path, intent: intent
    end
  end

  Appium::Core::Device.add_endpoint_method(:set_network_connection) do
    def set_network_connection(mode)
      execute :set_network_connection, {}, type: mode
    end
  end

  Appium::Core::Device.add_endpoint_method(:get_performance_data) do
    def get_performance_data(package_name:, data_type:, data_read_timeout: 1000)
      execute(:get_performance_data, {},
              packageName: package_name, dataType: data_type, dataReadTimeout: data_read_timeout)
    end
  end

  add_screen_recording
  Emulator.emulator_commands
end

Instance Method Details

#end_coverage(path, intent) ⇒ Object

Android only; Ends the test coverage and writes the results to the given path on device.

Parameters:

  • path (String)

    Path on the device to write too.

  • intent (String)

    Intent to broadcast when ending coverage.



# File 'lib/appium_lib_core/android/device.rb', line 25


#get_performance_data(package_name: , data_type: , data_read_timeout: 1000) ⇒ Object



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


#get_performance_data_typesObject

Get the information type of the system state which is supported to read such as cpu, memory, network, battery via adb commands. github.com/appium/appium-base-driver/blob/be29aec2318316d12b5c3295e924a5ba8f09b0fb/lib/mjsonwp/routes.js#L300



# File 'lib/appium_lib_core/android/device.rb', line 64


#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/android/device.rb', line 10


#set_network_connection(mode) ⇒ Object

Set the device network connection mode

Examples:


@driver.set_network_connection 1
@driver.network_connection_type = 1

Parameters:

  • mode (String)

    Bit mask that represent the network mode

    Value (Alias) | Data | Wifi | Airplane Mode


    1 (Airplane Mode) | 0 | 0 | 1 6 (All network on) | 1 | 1 | 0 4 (Data only) | 1 | 0 | 0 2 (Wifi only) | 0 | 1 | 0 0 (None) | 0 | 0 | 0



# File 'lib/appium_lib_core/android/device.rb', line 46


#start_activity(opts) ⇒ Object

Android only. Start a new activity within the current app or launch a new app and start the target activity.

Examples:


start_activity app_package: 'io.appium.android.apis',
  app_activity: '.accessibility.AccessibilityNodeProviderActivity'

Parameters:

  • opts (Hash)

    Options

Options Hash (opts):

  • :app_package (String)

    The package owning the activity [required]

  • :app_activity (String)

    The target activity [required]

  • :app_wait_package (String)

    The package to start before the target package [optional]

  • :app_wait_activity (String)

    The activity to start before the target activity [optional]



# File 'lib/appium_lib_core/android/device.rb', line 31


#start_recording_screen(remote_path: nil, user: nil, pass: nil, method: 'PUT', force_restart: nil, video_size: nil, time_limit: '180', bit_rate: '4000000') ⇒ Object

Examples:


@driver.start_recording_screen
@driver.start_recording_screen video_size: '1280x720', time_limit: '180', bit_rate: '5000000'

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. This option only has an effect if there is screen recording process in progress and forceRestart parameter is not set to true.

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

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

    Whether to try to catch and upload/return the currently running screen recording (false, the default setting on server) or ignore the result of it and start a new recording immediately (true).

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

    The format is widthxheight. The default value is the device’s native display resolution (if supported), 1280x720 if not. For best results, use a size supported by your device’s Advanced Video Coding (AVC) encoder. For example, “1280x720”

  • time_limit: (String) (defaults to: '180')

    Recording time. 180 seconds is by default.

  • bit_rate: (String) (defaults to: '4000000')

    The video bit rate for the video, in megabits per second. 4 Mbps(4000000) is by default.



# File 'lib/appium_lib_core/android/device.rb', line 86