Class: Maze::Api::Appium::FileManager
- Defined in:
- lib/maze/api/appium/file_manager.rb
Overview
Provides operations for working with files during Appium runs.
Instance Method Summary collapse
-
#read_app_file(filename, directory = nil) ⇒ String?
Attempts to retrieve a given file from the device (using Appium).
-
#write_app_file(contents, filename) ⇒ Boolean
Creates a file with the given contents on the device (using Appium).
Methods inherited from Manager
#fail_driver, #failed_driver?, #initialize
Constructor Details
This class inherits a constructor from Maze::Api::Appium::Manager
Instance Method Details
#read_app_file(filename, directory = nil) ⇒ String?
Attempts to retrieve a given file from the device (using Appium). The default location for the file will be the app’s documents directory for iOS. On Android, it will be /sdcard/Android/data/<app-id>/files unless Maze.config.android_app_files_directory has been set.
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/maze/api/appium/file_manager.rb', line 49 def read_app_file(filename, directory = nil) if failed_driver? $logger.error 'Cannot read file from device - Appium driver failed.' return nil end if directory path = "#{directory}/#{filename}" else path = case Maze::Helper.get_current_platform when 'ios' "@#{@driver.app_id}/Documents/#{filename}" when 'android' dir = Maze.config.android_app_files_directory || "/sdcard/Android/data/#{@driver.app_id}/files" "#{dir}/#{filename}" else raise 'read_app_file is not supported on this platform' end end $logger.trace "Attempting to read file from '#{path}'" @driver.pull_file(path) rescue Selenium::WebDriver::Error::UnknownError => e $logger.error "Error reading file from device: #{e.}" nil rescue Selenium::WebDriver::Error::ServerError => e # Assume the remote appium session has stopped, so crash out of the session fail_driver(e.) raise e end |
#write_app_file(contents, filename) ⇒ Boolean
Creates a file with the given contents on the device (using Appium). The file will be located in the app’s documents directory for iOS. On Android, it will be /sdcard/Android/data/<app-id>/files unless Maze.config.android_app_files_directory has been set.
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/maze/api/appium/file_manager.rb', line 15 def write_app_file(contents, filename) if failed_driver? $logger.error 'Cannot write file to device - Appium driver failed.' return false end path = case Maze::Helper.get_current_platform when 'ios' "@#{@driver.app_id}/Documents/#{filename}" when 'android' directory = Maze.config.android_app_files_directory || "/sdcard/Android/data/#{@driver.app_id}/files" "#{directory}/#{filename}" else raise 'write_app_file is not supported on this platform' end $logger.trace "Pushing file to '#{path}' with contents: #{contents}" @driver.push_file(path, contents) true rescue Selenium::WebDriver::Error::UnknownError => e $logger.error "Error writing file to device: #{e.}" false rescue Selenium::WebDriver::Error::ServerError => e # Assume the remote appium session has stopped, so crash out of the session fail_driver(e.) raise e end |