0
我真的需要你的幫助,我從3小時以來一直困擾我的問題... 我有一個VBA代碼,打開IE瀏覽器並導航到一個URL。 代碼似乎工作時,我的Microsoft Visual Basic中測試:VBA代碼不工作在UFT
Sub test()
On Error Resume Next
Set app = CreateObject("InternetExplorer.Application")
MsgBox "OpenWindow 1 : " & Err.Number
app.Visible = True
app.Navigate ("salut.com")
result = Err.Number
MsgBox "OpenWindow 2 : " & Err.Number
On Error GoTo 0
If result <> 0 Then
Call test
End If
End Sub
此代碼工作正常在一個Excel宏但每當我執行在UFT完全相同的代碼(統一Functionnal測試),它拋出錯誤:
- 錯誤-2147467261的導航後的CreateObject(?)
- 錯誤238後(我認爲這是很正常的,因爲 的CreateObject失敗)
的代碼是完全一樣的,我只是通過網址導航到該功能:
Function openWindow(url)
On error resume next
Set app = CreateObject("InternetExplorer.Application")
app.Visible = true
app.Navigate(url)
result = Err.number
On error goto 0
If result <> 0 Then
openWindow (url)
End If
End Function
我實在是沒有的問題是什麼想法......
我想你可能需要閱讀[這](http://stackoverflow.com/documentation/vba/1179/procedure-calls/3818/this-is-confusing-why-not-just-總是使用-括號#噸= 201704191432562970515)。然後將'url'聲明爲'ByVal url As String',所以函數只能使用'String'。現在我們並不確定'Navigate'調用是否失敗,因爲你給了它無法處理的東西 - 顯式的'String'參數會使事情變得更模糊。似乎UFT無法處理'CreateObject'調用? –
我從來沒有使用UFT,但通過任何編程標準,你應該聲明你的變量(並在每個模塊的頂部指定'Option Explicit'),而'app'是'openWindow'函數的依賴關係,這真的只是一個程序,因爲它沒有返回任何東西。因此,不應該創建自己的依賴關係,而應該將其作爲參數注入,而自動化測試應該提供虛擬/模擬實現,以實現您的方法需要使用的任何接口。 [這可能會讓你感興趣](https://rubberduckvba.wordpress.com/2017/03/17/go-ahead-mock-vba/)。 –
此外,你的函數是遞歸的,並且在給定任何無效的'url'或者*任何*錯誤的情況下總會炸掉調用堆棧。 –