Skip to content

Commit 443394d

Browse files
authored
add viewportScreen (#63)
1 parent c5c2a96 commit 443394d

File tree

4 files changed

+40
-0
lines changed

4 files changed

+40
-0
lines changed

CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ All notable changes to this project will be documented in this file.
33

44
## [Unreleased]
55
### Enhancements
6+
- Add `save_viewport_screenshot` which get screenshot except for status bar.
7+
- https://github.com/search?q=org%3Aappium+viewportScreenshot&type=Code
68

79
### Bug fixes
810

lib/appium_lib_core/common/device.rb

+20
Original file line numberDiff line numberDiff line change
@@ -369,6 +369,14 @@ module Device
369369
# @driver.pull_folder '/data/local/tmp' #=> Get the folder at that path
370370
#
371371

372+
# @!method save_viewport_screenshot
373+
# Save screenshot except for status bar while `@driver.save_screenshot` save entire screen.
374+
#
375+
# @example
376+
#
377+
# @driver.save_viewport_screenshot 'path/to/save.png' #=> Get the File instance of viewport_screenshot
378+
#
379+
372380
# @!method update_settings(settings)
373381
# Update Appium Settings for current test session
374382
# @param [Hash] settings Settings to update, keys are settings, values to value to set each setting to
@@ -630,6 +638,18 @@ def update_settings(settings)
630638
end
631639
end
632640

641+
add_endpoint_method(:save_viewport_screenshot) do
642+
def save_viewport_screenshot(png_path)
643+
extension = File.extname(png_path).downcase
644+
if extension != '.png'
645+
WebDriver.logger.warn 'name used for saved screenshot does not match file type. '\
646+
'It should end with .png extension'
647+
end
648+
viewport_screenshot_encode64 = execute_script('mobile: viewportScreenshot')
649+
File.open(png_path, 'wb') { |f| f << viewport_screenshot_encode64.unpack('m')[0] }
650+
end
651+
end
652+
633653
add_keyevent
634654
add_touch_actions
635655
add_ime_actions

test/functional/android/android/device_test.rb

+9
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,15 @@ def test_take_element_screenshot
328328
File.delete 'take_element_screenshot.png'
329329
end
330330

331+
def test_viewport_screenshot
332+
file = @@driver.save_viewport_screenshot './ios_viewport_screenshot_test.png'
333+
334+
assert File.exist?(file.path)
335+
336+
File.delete file.path
337+
assert !File.exist?(file.path)
338+
end
339+
331340
private
332341

333342
def scroll_to(text)

test/functional/ios/ios/device_test.rb

+9
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,15 @@ def test_within_context
228228

229229
assert_equal 'Buttons', result.name
230230
end
231+
232+
def test_viewport_screenshot
233+
file = @@driver.save_viewport_screenshot './ios_viewport_screenshot_test.png'
234+
235+
assert File.exist?(file.path)
236+
237+
File.delete file.path
238+
assert !File.exist?(file.path)
239+
end
231240
end
232241
end
233242
end

0 commit comments

Comments
 (0)