SilkTest 技術情報(FAQ)


.NETスクリプトでビットマップオブジェクトの単純比較を行う

SilkTest Workbenchでは、CaptureBitmapメソッドを使用して指定したXPATHのビットマップファイルを取得することは可能ですが、取得したビットマップ同士を比較する機能は提供していません。
このサンプルコードは、それらを補完するものです。

  • ※Silk Test 14.0からイメージ検証機能が追加されました。
  1. ファイルメニューから「新規作成 → .NETスクリプト」、資産名「BitmapUtility」として空の資産を作成する

共有モジュールとしてコーディングを行う

  • ファイル"Main"に以下のコードを記述する
    Imports System.Drawing
    
    Public Class BitmapUtility
    	Public Shared Function compareBitmaps(source As String, compare As String) As Boolean
    		Dim srceBmp As New Bitmap(source)
    		Dim compBmp As New Bitmap(compare)
     
    		Dim srceHeight, srceWidth As Integer
    		Dim compHeight, compWidth As Integer
    
    		'ソースビットマップの高さと幅を取得
    		srceHeight = srceBmp.Height
    		srceWidth = srceBmp.Width
         
    		'比較元のビットマップの高さと幅を取得
    		compHeight = compBmp.Height
    		compWidth = compBmp.Width
               
               
    		'高さと幅が違っていたら無条件にエラー
    		If(srceHeight <> compHeight Or srceWidth <> compWidth)
    			Return False
    		End If
               
         
    		'各イメージをピクセル単位で比較
    		Dim width, height As Integer
    		width = 0
    		height = 0
    
    		For height=0 To srceHeight-1
    			For width=0 To srceWidth-1
    				If srceBmp.GetPixel(width,height) <> compBmp.GetPixel(width,height)
    					Return False
    				End If
    			Next width 
    		Next height
    		
    		Return True
    	End Function
    End Class
    

他の.NETスクリプトからの呼び出し例

  • 上記で作成した.NETスクリプトは、共有モジュールとして利用できます。プロパティの[参照]→[.NETスクリプト]で「.NETスクリプト参照の追加」を選択して、common.BitmapUtilityを追加してください。
Imports SilkTest.Ntf.XBrowser

Public Module Main
	Dim _desktop As Desktop = Agent.Desktop
	Dim bMatch As Boolean

	Public Sub Main()
		With _desktop.BrowserApplication("webBrowser")
			With .BrowserWindow("BrowserWindow")
				bMatch = BitmapUtility.compareBitmaps("c:\silk\login1.bmp", "c:\silk\login2.bmp") 
				If bMatch Then
					msgbox("ビットマップファイルは同じでした")
				End If
				.DomLink("Settings").Click(MouseButton.Left, New Point(4, 9))
				.DomButton("change-settings rese").Click(MouseButton.Left, New Point(35, 12))
				.DomLink("Home").Click(MouseButton.Left, New Point(48, 7))
				.DomButton("login-form signup").Click(MouseButton.Left, New Point(25, 6))
				.DomTextField("signup fname").Click(MouseButton.Left, New Point(81, 12))
				.DomTextField("signup fname").TypeKeys("Andy")
				.DomTextField("signup lname").Click(MouseButton.Left, New Point(76, 13))
			End With
		End With
		
	End Sub
End Module

免責事項

ここで紹介したスクリプトは説明のためのサンプルであり、製品の一部ではございません。スクリプトが実際に動作するか、御社業務に適合するかなどに関しまして、一切の保証はございません。 スクリプト、説明、その他すべてについて、無謬性は保障されません。

ここで紹介するスクリプトの一部、もしくは全部について、弊社に断りなく、御社スクリプトの内部に組み込み、そのままご利用頂いても構いません。

本スクリプトの一部もしくは全部を二次的著作物に対して引用する場合、著作権法の精神に基づき、適切な扱いを行ってください。