Module: MobyBehaviour::QT::ScreenCapture
- Includes:
- Behaviour
- Defined in:
- lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/screen_capture.rb
Overview
description
ScreenCapture specific behaviours
behaviour
QtScreenCapture
requires
testability-driver-qt-sut-plugin
input_type
*
sut_type
QT
sut_version
*
objects
*
Instance Method Summary collapse
-
#capture_screen(format = "PNG", file_name = nil, draw = false) ⇒ Object
description: If the text is not a string.
-
#find_on_screen(image_or_path, tolerance = 0) ⇒ Object
description: image_or_path was not of one of the allowed image types or a non empty String, or tolerance was not an Integer in the [0,100] range.
-
#screen_contains?(image_or_path, tolerance = 0) ⇒ Boolean
description: No image could be loaded from the path given in image_or_path.
Methods included from Behaviour
Instance Method Details
#capture_screen(format = "PNG", file_name = nil, draw = false) ⇒ Object
description: If the text is not a string.
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/screen_capture.rb', line 84 def capture_screen( format = "PNG", file_name = nil, draw = false ) ret = nil begin # convert string representation of draw value to boolean draw = ( draw.downcase == 'true' ? true : false ) if draw.kind_of?( String ) # verify that image format is type of string raise ArgumentError.new( "Unexpected argument type (%s) for image format, expected %s" % [ format.class, "String" ] ) unless format.kind_of?( String ) # verify that filename is type of string raise ArgumentError.new( "Unexpected argument type (%s) for filename, expected %s" % [ file_name.class, "String" ] ) unless file_name.nil? || file_name.kind_of?( String ) # verify that draw flag is type of boolean raise ArgumentError.new( "Unexpected argument type (%s) for draw flag, expected %s" % [ draw.class, "boolean (TrueClass or FalseClass)" ] ) unless [ TrueClass, FalseClass ].include?( draw.class ) command = command_params #in qt_behaviour command.command_name( 'Screenshot' ) command.command_params( 'format'=>format, 'draw' => draw.to_s ) command.set_require_response( true ) command.transitions_off command.service( 'screenShot' ) image_binary = @sut.execute_command( command ) File.open(file_name, 'wb:binary'){ | image_file | image_file << image_binary } if ( file_name ) rescue Exception => e #$logger.behaviour "FAIL;Failed capture_screen with format \"#{format}\", file_name \"#{file_name}\".;#{ identity };capture_screen;" $logger.behaviour "FAIL;Failed capture_screen with format \"%s\", file_name \"%s\".;%s;capture_screen;" % [ format, file_name, identity ] raise e end #$logger.behaviour "PASS;Operation capture_screen executed successfully with format \"#{format}\", file_name \"#{file_name}\".;#{ identity };capture_screen;" $logger.behaviour "PASS;Operation capture_screen executed successfully with format \"%s\", file_name \"%s\".;%s;capture_screen;" % [ format, file_name, identity ] image_binary end |
#find_on_screen(image_or_path, tolerance = 0) ⇒ Object
description: image_or_path was not of one of the allowed image types or a non empty String, or tolerance was not an Integer in the [0,100] range. RuntimeError
description: No image could be loaded from the path given in image_or_path
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 209 210 211 212 213 214 215 216 217 218 |
# File 'lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/screen_capture.rb', line 165 def find_on_screen( image_or_path, tolerance = 0 ) # RuntimeError:: No image could be loaded from the path given in image_or_path begin require 'rmagick' raise ArgumentError.new("The tolerance argument was not an Integer in the [0,100] range.") unless tolerance.kind_of? Integer and tolerance >= 0 and tolerance <= 100 target = nil if image_or_path.kind_of? Magick::Image target = image_or_path elsif image_or_path.kind_of? Magick::ImageList raise ArgumentError.new("The supplied ImageList argument did not contain any images.") unless image_or_path.length > 0 target = image_or_path elsif image_or_path.kind_of? String and !image_or_path.empty? begin target = Magick::ImageList.new(image_or_path) rescue raise RuntimeError.new("Could not load target for image comparison from path: \"#{image_or_path.to_s}\".") end else raise ArgumentError.new("The image_or_path argument was not of one of the allowed image types or a non empty String.") end begin screen = Magick::Image.from_blob(capture_screen){ self.format = "PNG" }.first screen.fuzz = tolerance.to_s + "%" rescue raise RuntimeError.new("Failed to capture SUT screen for comparison. Details:\n" << $!.) end result = screen.find_similar_region( target ) rescue Exception => e $logger.behaviour "FAIL;Failed when searching for image on the screen.;#{ identity };find_on_screen;#{(image_or_path.respond_to?(:filename) ? image_or_path.filename : image_or_path.to_s)},#{tolerance.to_s}" raise e end $logger.behaviour "PASS;Image search completed successfully.;#{ identity };find_on_screen;#{(image_or_path.respond_to?(:filename) ? image_or_path.filename : image_or_path.to_s)},#{tolerance.to_s}" result end |
#screen_contains?(image_or_path, tolerance = 0) ⇒ Boolean
description: No image could be loaded from the path given in image_or_path
252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 |
# File 'lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/screen_capture.rb', line 252 def screen_contains?( image_or_path, tolerance = 0 ) begin # find_on_screen returns nil if the image is not found on the device screen result = !find_on_screen(image_or_path, tolerance).nil? rescue Exception => exc $logger.behaviour "FAIL;Failed when searching for image on the screen.;#{ identity };screen_contains?;#{(image_or_path.respond_to?(:filename) ? image_or_path.filename : image_or_path.to_s)},#{tolerance.to_s}" raise exc end $logger.behaviour "PASS;Image search completed successfully.;#{ identity };screen_contains?;#{(image_or_path.respond_to?(:filename) ? image_or_path.filename : image_or_path.to_s)},#{tolerance.to_s}" result end |