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



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

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 141

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

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

#start_recording_screen(remote_path: nil, user: nil, pass: nil, method: nil, force_restart: nil, video_type: 'mjpeg', video_fps: nil, time_limit: '180', video_quality: 'medium', video_scale: '320:240') ⇒ Object

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: nil)

    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_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: 'medium')

    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_scale (String) (defaults to: '320:240')

    The scaling value to apply. Read trac.ffmpeg.org/wiki/Scaling for possible values. No scale is applied by default.

  • pixel_format (String)

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

Since:

  • Appium 1.9.1



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