Module: Appium::Core::Ios::Xcuitest::Device

Extended by:
Forwardable
Defined in:
lib/appium_lib_core/ios/xcuitest/device.rb,
lib/appium_lib_core/ios/xcuitest/device/screen.rb,
lib/appium_lib_core/ios/xcuitest/device/battery.rb,
lib/appium_lib_core/ios/xcuitest/device/performance.rb

Defined Under Namespace

Modules: Battery, Performance, Screen

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.extended(_mod) ⇒ Object


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
# File 'lib/appium_lib_core/ios/xcuitest/device.rb', line 181

def extended(_mod)
  # Xcuitest, Override included method in bridge
  ::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 if strategy

      execute :hide_keyboard, {}, option
    end
  end

  # Xcuitest, Override included method in bridge
  ::Appium::Core::Device.add_endpoint_method(:background_app) do
    def background_app(duration = 0)
      # https://github.com/appium/ruby_lib/issues/500, https://github.com/appium/appium/issues/7741
      # 'execute :background_app, {}, seconds: { timeout: duration_milli_sec }' works over Appium 1.6.4
      duration_milli_sec = duration.nil? ? nil : duration * 1000
      execute :background_app, {}, seconds: { timeout: duration_milli_sec }
    end
  end

  Performance.add_methods
  Screen.add_methods
  Battery.add_methods
end

Instance Method Details

#background_app(duration = 0) ⇒ Object

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.


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

#battery_infoHash

Get battery information.

Examples:


@driver.battery_info #=> { state: :full, level: 0.7 }

Returns:

  • (Hash)

    Return battery level and battery state from the target real device. (Simulator has no battery.) developer.apple.com/documentation/uikit/uidevice/ 's batteryLevel and batteryState. Battery level in range [0.0, 1.0], where 1.0 means 100% charge. -1 is returned if the actual value cannot be retrieved from the system. Battery state. The following symbols are possible :unplugged, :charging, :full

Since:

  • Appium 1.6.0


# File 'lib/appium_lib_core/ios/xcuitest/device.rb', line 157

#get_performance_record(save_file_path: './performance', profile_name: 'Activity Monitor', remote_path: nil, user: nil, pass: nil, method: 'PUT') ⇒ Object

This is a blocking application.

Examples:


@driver.get_performance_record
@driver.get_performance_record(save_file_path: './performance', profile_name: 'Activity Monitor')

Parameters:

  • save_file_path (String) (defaults to: './performance')

    A path to save data as zipped .trace file

  • profile_name (String) (defaults to: 'Activity Monitor')

    The name of existing performance profile to apply. Execute instruments -s to show the list of available profiles. Note, that not all profiles are supported on mobile devices.

  • remote_path (String) (defaults to: nil)

    The path to the remote location, where the resulting zipped .trace file 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 zipped, encoded as Base64 and passed as the endpount response value. An exception will be thrown if the generated 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. Only works if remotePath is provided.

  • pass (String) (defaults to: nil)

    The password for the remote authentication. Only works if remotePath is provided.

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

    The http multipart upload method name. Only works if remotePath is provided.

Since:

  • Appium 1.3.4


# File 'lib/appium_lib_core/ios/xcuitest/device.rb', line 133

#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

Parameters:

  • close_key (String) (defaults to: nil)

    The name of the key which closes the keyboard.

  • 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/ios/xcuitest/device.rb', line 28

#start_performance_record(timeout: 300000, profile_name: 'Activity Monitor', pid: nil) ⇒ Object

This is a blocking application. Read help.apple.com/instruments/mac/current/ to understand the profiler.

Examples:


@driver.start_performance_record # default: (timeout: 300000, profile_name: 'Activity Monitor')
@driver.start_performance_record(timeout: 300000, profile_name: 'Activity Monitor')

Parameters:

  • timeout (Integer|String) (defaults to: 300000)

    The maximum count of milliseconds to record the profiling information.

  • profile_name (String) (defaults to: 'Activity Monitor')

    The name of existing performance profile to apply. Execute instruments -s to show the list of available profiles. Note, that not all profiles are supported on mobile devices.

  • pid (Integer|String) (defaults to: nil)

    The ID of the process to measure the performance for. Set it to current in order to measure the performance of the process, which belongs to the currently active application. All processes running on the device are measured if pid is unset (the default setting). Setting process ID while device under test is Simulator might require instruments to be launched with sudo privileges, which is not supported and will throw a timeout exception.

Returns:

  • nil

Since:

  • Appium 1.3.4


# File 'lib/appium_lib_core/ios/xcuitest/device.rb', line 109

#start_recording_screen(remote_path: nil, user: nil, pass: nil, method: 'PUT', file_field_name: nil, form_fields: nil, headers: nil, force_restart: nil, video_type: 'mjpeg', video_fps: nil, time_limit: '180', video_quality: nil, video_scale: nil, video_filters: nil, pixel_format: nil) ⇒ String

Record the display of devices running iOS Simulator since Xcode 9 or real devices since iOS 11 (ffmpeg utility is required: 'brew install ffmpeg'). We would recommend to play the video by VLC or Mplayer if you can not play the video with other video players.

Examples:


@driver.start_recording_screen
@driver.start_recording_screen video_type: 'mjpeg', time_limit: '260'
@driver.start_recording_screen video_type: 'libx264', time_limit: '260' # Can get '.mp4' video

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 endpount 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 progreess 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.

  • file_field_name (String) (defaults to: nil)

    The name of the form field containing the binary payload in multipart/form-data requests since Appium 1.18.0. Defaults to 'file'.

  • form_fields (Array<Hash, Array<String>>) (defaults to: nil)

    The form fields mapping in multipart/form-data requests since Appium 1.18.0. If any entry has the same key in this mapping, then it is going to be ignored.

  • headers (Hash) (defaults to: nil)

    The additional headers in multipart/form-data requests since Appium 1.18.0.

  • 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_type (String) (defaults to: 'mjpeg')

    The video codec type used for encoding of the be recorded screen capture. Execute ffmpeg -codecs in the terminal to see the list of supported video codecs. 'mjpeg' by default.

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

    Recording time. 180 seconds is by default.

  • video_quality (String) (defaults to: nil)

    The video encoding quality (low, medium, high, photo - defaults to medium).

  • video_fps (String) (defaults to: nil)

    The Frames Per Second rate of the recorded video. Change this value if the resulting video is too slow or too fast. Defaults to 10. This can decrease the resulting file size.

  • video_filters (String) (defaults to: nil)
    • @since Appium 1.15.0

    The ffmpeg video filters to apply. These filters allow to scale, flip, rotate and do many other useful transformations on the source video stream. The format of the property must comply with ffmpeg.org/ffmpeg-filters.html e.g.: “rotate=90”

  • video_scale (String) (defaults to: nil)

    The scaling value to apply. Read trac.ffmpeg.org/wiki/Scaling for possible values. No scale is applied by default. tips: ffmpeg cannot capture video as libx264 if the video dimensions is not divisible by 2. Then, you can set this scale as scale=trunc(iw/2)*2:trunc(ih/2)*2

  • pixel_format (String) (defaults to: nil)

    Output pixel format. Run ffmpeg -pix_fmts to list possible values. For Quicktime compatibility, set to “yuv420p” along with videoType: “libx264”.

Returns:

  • (String)

    Base64 encoded content of the recorded media file or an empty string if the file has been successfully uploaded to a remote location (depends on the actual options)

Since:

  • Appium 1.9.1


# File 'lib/appium_lib_core/ios/xcuitest/device.rb', line 53