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



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
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
# File 'lib/appium_lib_core/android/device.rb', line 149

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
  add_clipboard
  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 26

#get_clipboard(content_type: :plaintext) ⇒ Object

Set the content of device’s clipboard.



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

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



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

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

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

#set_clipboard(content: , content_type: :plaintext, label: nil) ⇒ Object

Set the content of device’s clipboard.



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

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

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

#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 Mbp/s(4000000) is by default for Android API level below 27. 20 Mb/s(20000000) for API level 27 and above.

  • bug_report: (Boolean)

    Set it to ‘true` in order to display additional information on the video overlay, such as a timestamp, that is helpful in videos captured to illustrate bugs. This option is only supported since API level 27 (Android P).



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