QTP自動化測試Google地圖

Just4life發表於2013-07-22
如何用QTPGoogle地圖進行自動化測試呢?因為Google地圖是內嵌到瀏覽器裡的ActiveX控制元件,那麼我們的思路就是用vbscript呼叫Goolge地圖的API,從而實現對內嵌Google地圖的操作與驗證!本文原文請見:http://www.advancedqtp.com/knowledge-base/articles/environment-techniques-id15/web-id34/automating-google-earth/

  【前置條件】

  QTP載入WEB和ActiveX外掛

  IE7,並訪問http://code.google.com/apis/earth/頁面下載Google地圖Plugin

  熟悉Google地圖的API(參見http://code.google.com/apis/earth/頁面),以便指令碼程式設計

  【例項指令碼】

  該指令碼實現了改變地圖檢視型別、顯示Google地圖控制元件、瀏覽紐約時區的一些操作。

    Const URL = "http://earth-api-samples.googlecode.com/svn/trunk/demos/kmlplayground/index.html"
    Const SW_MAXIMIZED = 3
    
    ' 關閉當前瀏覽器後開啟新的瀏覽器進入Google地圖頁面
    SystemUtil.CloseProcessByName "iexplore.exe"
    SystemUtil.Run "iexplore.exe", URL, "", "open", SW_MAXIMIZED
    Browser("CreationTime:=0").Page("index:=0").Sync
    Set objActiveX = Browser("CreationTime:=0").Page("index:=0").ActiveX("progid:=GEPluginCoClass.GEPluginCoClass.1.0", "location:=0").Object

    

    ' 獲取地圖控制元件屬性值
    ALTITUDE_ABSOLUTE = objActiveX.ALTITUDE_ABSOLUTE
    VISIBILITY_SHOW = objActiveX.VISIBILITY_SHOW
    ALTITUDE_RELATIVE_TO_GROUND = objActiveX.ALTITUDE_RELATIVE_TO_GROUND
    MAP_TYPE_EARTH = objActiveX.MAP_TYPE_EARTH
    MAP_TYPE_SKY = objActiveX.MAP_TYPE_SKY
    SPEED_TELEPORT = objActiveX.SPEED_TELEPORT
    wait 2


    ' 改變SKY檢視
    Set geOptions = objActiveX.getOptions()
    Call geOptions.setMapType( MAP_TYPE_SKY )
    wait 5
    
    ' 改變EARTH檢視
    Call geOptions.setMapType( MAP_TYPE_EARTH )

    

    ' 以最大速度縮放檢視
    geOptions.setFlyToSpeed( SPEED_TELEPORT )
    Set kmlLookAt = objActiveX.getView().copyAsLookAt( ALTITUDE_ABSOLUTE )
    kmlLookAt.setRange(50000000)
    objActiveX.getView().setAbstractView(kmlLookAt)
    wait 2

    

    ' 顯示視覺化控制元件
    geOptions.setGridVisibility( true )
    geOptions.setStatusBarVisibility(true)
    geOptions.setScaleLegendVisibility( true )
    geOptions.setMouseNavigationEnabled( true )
    geOptions.setOverviewMapVisibility( true )
    
    ' 返回定位控制元件
    Set geNavigationControl = objActiveX.getNavigationControl()
    geNavigationControl.setVisibility( VISIBILITY_SHOW )
    Set geView = objActiveX.getView()
    Set kmlLookAt = geView.copyAsLookAt( ALTITUDE_RELATIVE_TO_GROUND )
    
    ' 設定顯示速度、標題等
    geOptions.setFlyToSpeed(0.5)
    kmlLookAt.setTilt(0)
    kmlLookAt.setHeading(0)

    

    ' 設定到紐約時區
    kmlLookAt.setLatitude( 40.7594 )
    kmlLookAt.setLongitude( -73.985 )

    objActiveX.getView().setAbstractView(kmlLookAt)

    

    '迴圈滾動地圖
    For i = 1 to 17
        kmlLookAt.setRange(kmlLookAt.getRange() * 0.5)
        objActiveX.getView().setAbstractView(kmlLookAt)
        Wait 1
    Next

    Set objActiveX = Nothing


相關文章