背景:在写自动化脚本的时候,遇到一个问题:数据源在跨库的情况下,不能使用localhost而要用本机的IP地址,如何更改数据源的地址(例如:http://localhost:18080/mysql)改为本机或服务器的IP地址(http://168.10.10.1:18080/mysql),经过参考网上的一些方法,我封装了一下两个函数来实现。
CrossdatabaseQuery
' ***************************************************************************
' Purpose: 把跨库查询的数据库连接地址中的localhost改为服务器的ID
' Input: dbID(数据库ID),dbName(数据库别名)
' Return: null
' Created: Huangzhenxu@2019-9-18
' Modified: Huangzhenxu@2019-9-23
'
' **************************************************************************
Function CrossdatabaseQuery(dbID,dbName)
Dim dbEdit
Set dbEdit=Browser("公共资源").Page("定制管理页面").WebEdit("class:=.*inputtext","html tag:=INPUT","name:=textfieldConnectionString")
OpenSourceById dbID,dbName
If not dbEdit.Exist(5) then
FReporterFail "打开跨库查询要修改localhost的数据库","打开失败","透视分析"
Exit Function
End If
dbEdit.Set Replace(dbEdit.GetROProperty("value"),"localhost",GetIPMAC("."))
Browser("公共资源").Page("定制管理页面").WebButton("class:=.*barbtn mg-left","html tag:=INPUT","name:=测试连接\(T\)").Click
If not Browser("公共资源").Page("定制管理页面").WebElement("html tag:=DIV","innerhtml:=测试通过!").Exist(5) Then
FReporterFail "测试连接","连接失败","公共资源"
Exit Function
End If
Browser("公共资源").Page("定制管理页面").WebElement("class:=layui-layer-btn0","innertext:=确定\(O\)","html tag:=A").Click
waitUntil Browser("公共资源").Page("定制管理页面").WebButton("class:=_buttonOk barbtn mg-left","html tag:=INPUT","value:=保存\(S\)"),5,true
Browser("公共资源").Page("定制管理页面").WebButton("class:=_buttonOk barbtn mg-left","html tag:=INPUT","value:=保存\(S\)").Click
waitUntil Browser("公共资源").Page("定制管理页面").WebElement("class:=layui-layer-btn0","html tag:=A","innertext:=确定\(O\)"),5,true
Browser("公共资源").Page("定制管理页面").WebElement("class:=layui-layer-btn0","html tag:=A","innertext:=确定\(O\)").Click
End Function
GetIPMAC
' ***************************************************************************
' Purpose: 获取服务器(或本地)IP地址
' Input: ComputerName(计算机名,推荐用 "." )
' Return: 服务器IP地址
' Created: Huangzhenxu@2019-9-23
' Modified: Huangzhenxu@2019-9-23
'
' **************************************************************************
Function GetIPMAC(ComputerName)
Dim objWMIService,colItems,objItem,objAddress
Set objWMIService = GetObject("winmgmts://" & ComputerName & "/root/cimv2")
Set colItems = objWMIService.ExecQuery("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")
For Each objItem in colItems
For Each objAddress in objItem.IPAddress
If objAddress <> "" then
GetIPMAC = objAddress
Exit For
End If
Next
Exit For
Next
End Function