.NETスクリプトでビットマップオブジェクトの単純比較を行う
SilkTest Workbenchでは、CaptureBitmapメソッドを使用して指定したXPATHのビットマップファイルを取得することは可能ですが、取得したビットマップ同士を比較する機能は提供していません。
このサンプルコードは、それらを補完するものです。
- ※Silk Test 14.0からイメージ検証機能が追加されました。
- ファイルメニューから「新規作成 → .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
免責事項
ここで紹介したスクリプトは説明のためのサンプルであり、製品の一部ではございません。スクリプトが実際に動作するか、御社業務に適合するかなどに関しまして、一切の保証はございません。
スクリプト、説明、その他すべてについて、無謬性は保障されません。
ここで紹介するスクリプトの一部、もしくは全部について、弊社に断りなく、御社スクリプトの内部に組み込み、そのままご利用頂いても構いません。
本スクリプトの一部もしくは全部を二次的著作物に対して引用する場合、著作権法の精神に基づき、適切な扱いを行ってください。