如果 Err.Description = "....." 那么 ..... 在 VBscript 中
If Err.Description = "...." Then ..... in VBscript
我正在使用这种方式修复波纹管错误 "datatable importsheet operation failed. Invalid file":
On error resume next
DataTable.ImportSheet Environment("STPFilePath"),Environment("TestScriptName"),"Action2"
If Err.Description = "The DataTable.ImportSheet operation failed. Invalid file." \n "Line (20): "DataTable.ImportSheet Environment("STPFilePath"),Environment("TestScriptName"),"Action2""." Then
list of instructions
end if
但是我得到了这个错误:
由于语法错误,测试 运行 无法继续。
Expected 'Then'
Line (24): "If Err.Description = "The DataTable.ImportSheet operation failed. Invalid file." \n "Line (20): "DataTable.ImportSheet Environment("STPFilePath"),Environment("TestScriptName"),"Action2""." Then".
一切正常。请任何帮助?我哪里错了?
基本规则:
- 双引号 (") 通过加倍转义 ("")
- 在 VBScript 字符串文字中没有像“\n”这样的转义(需要连接(或替换))
- 连接运算符是 &
基本策略:简化、分而治之:
>> s = "1" & vbCrLf & "-""pi""-"
>> t = "1" & vbCrLf & "-""pi""-"
>> WScript.Echo s
>> WScript.Echo t
>> If s = t Then
>> WScript.Echo "no surprise"
>> End If
>>
1
-"pi"-
1
-"pi"-
no surprise
>>
已添加:
已应用于您的 string/error 消息:
's = "The DataTable.ImportSheet operation failed. Invalid file." \n "Line (20): "DataTable.ImportSheet Environment("STPFilePath"),Environment("TestScriptName"),"Action2""."
s = "1" & vbCrLf & "2: ""3(""4""),5(""6""),""7""."
WScript.Echo s
输出:
cscript 39878005.vbs
1
2: "3("4"),5("6"),"7".
尝试用此替换 Err.Description 行
If Err.Description = "The DataTable.ImportSheet operation failed. Invalid file." & vbCrLf & "Line (20): DataTable.ImportSheet Environment(" & STPFilePath & "),Environment(" & TestScriptName & ")," & Action2 & "." Then
祝你好运!
我真的为你正在尝试做的事情而苦苦挣扎,你的评论也没有帮助...
使用时
On Error Resume Next
如果您在执行语句时遇到错误,则会发生以下情况;
- 该语句将被跳过,脚本将移至下一条语句并继续执行。
- 对象
Err
将填充导致语句被跳过的错误的详细信息。
Err
object 由一些描述发生的错误的关键属性组成;
Number
- 所引发错误的错误代码。
Source
- 引发错误的来源,这可以是第 3 方库、VBScript 运行时等。
Description
- 错误的自由文本描述。
如果要检查错误
The DataTable.ImportSheet operation failed. Invalid file.
当
DataTable.ImportSheet Environment("STPFilePath"),Environment("TestScriptName"),"Action2"
执行后,您需要捕获与该特定错误相对应的 Err.Number
代码。
像这样;
On Error Resume Next
DataTable.ImportSheet Environment("STPFilePath"),Environment("TestScriptName"),"Action2"
'Check that an error occurs
If Err.Number <> 0 Then
'Identify specific error and deal with accordingly.
Select Case Err.Number
Case 20012 'Code for DataTable.ImportSheet operation failed
'List of instructions...
Case Else
'Unhandled error show to screen
MsgBox "Error: " & Err.Number & " (" & Err.Source & ") - " & Err.Description
End Select
'Finished handling the error
Call Err.Clear()
End If
我觉得最令人困惑的是这个线程中的错误信息。
-
"I need the description and not the number and the problem is to use Err.Details and not Err.Description in my case. Now, it is working." -
Err
对象不包含名为 Details
的 属性 除非这是 QTP 特有的东西,但到目前为止我还没有能够快速找到任何东西 Google 搜索。所以你怎么能说 “它现在正在工作” 超出了我的范围。
您收到语法错误,因为您的 if 语句中的双引号未转义。
我不确定你想在这里做什么,也许使用 Err.Number 更有意义,但如果你想避免语法错误,请使用此代码:
If Err.Description = "The DataTable.ImportSheet operation failed. Invalid file."" \n ""Line (20): ""DataTable.ImportSheet Environment(""STPFilePath""),Environment(""TestScriptName""),""Action2""." Then
''' list of instructions
End If
此外,如果你想在 if 语句中比较 2 行,你不能使用 \n。使用 CHR(13)
或 CHR(10)
代替 \n。即
If Err.Description = "The DataTable.ImportSheet operation failed. Invalid file."& CHR(13) &"Line (20): ""DataTable.ImportSheet Environment(""STPFilePath""),Environment(""TestScriptName""),""Action2""." Then
'''list of instructions
End If
再次:使用 Err.Number 将更有意义,因为上面的任何 extra/missing space/newline 如果条件将失败条件。
我正在使用这种方式修复波纹管错误 "datatable importsheet operation failed. Invalid file":
On error resume next
DataTable.ImportSheet Environment("STPFilePath"),Environment("TestScriptName"),"Action2"
If Err.Description = "The DataTable.ImportSheet operation failed. Invalid file." \n "Line (20): "DataTable.ImportSheet Environment("STPFilePath"),Environment("TestScriptName"),"Action2""." Then
list of instructions
end if
但是我得到了这个错误:
由于语法错误,测试 运行 无法继续。
Expected 'Then'
Line (24): "If Err.Description = "The DataTable.ImportSheet operation failed. Invalid file." \n "Line (20): "DataTable.ImportSheet Environment("STPFilePath"),Environment("TestScriptName"),"Action2""." Then".
一切正常。请任何帮助?我哪里错了?
基本规则:
- 双引号 (") 通过加倍转义 ("")
- 在 VBScript 字符串文字中没有像“\n”这样的转义(需要连接(或替换))
- 连接运算符是 &
基本策略:简化、分而治之:
>> s = "1" & vbCrLf & "-""pi""-"
>> t = "1" & vbCrLf & "-""pi""-"
>> WScript.Echo s
>> WScript.Echo t
>> If s = t Then
>> WScript.Echo "no surprise"
>> End If
>>
1
-"pi"-
1
-"pi"-
no surprise
>>
已添加:
已应用于您的 string/error 消息:
's = "The DataTable.ImportSheet operation failed. Invalid file." \n "Line (20): "DataTable.ImportSheet Environment("STPFilePath"),Environment("TestScriptName"),"Action2""."
s = "1" & vbCrLf & "2: ""3(""4""),5(""6""),""7""."
WScript.Echo s
输出:
cscript 39878005.vbs
1
2: "3("4"),5("6"),"7".
尝试用此替换 Err.Description 行
If Err.Description = "The DataTable.ImportSheet operation failed. Invalid file." & vbCrLf & "Line (20): DataTable.ImportSheet Environment(" & STPFilePath & "),Environment(" & TestScriptName & ")," & Action2 & "." Then
祝你好运!
我真的为你正在尝试做的事情而苦苦挣扎,你的评论也没有帮助...
使用时
On Error Resume Next
如果您在执行语句时遇到错误,则会发生以下情况;
- 该语句将被跳过,脚本将移至下一条语句并继续执行。
- 对象
Err
将填充导致语句被跳过的错误的详细信息。
Err
object 由一些描述发生的错误的关键属性组成;
Number
- 所引发错误的错误代码。Source
- 引发错误的来源,这可以是第 3 方库、VBScript 运行时等。Description
- 错误的自由文本描述。
如果要检查错误
The DataTable.ImportSheet operation failed. Invalid file.
当
DataTable.ImportSheet Environment("STPFilePath"),Environment("TestScriptName"),"Action2"
执行后,您需要捕获与该特定错误相对应的 Err.Number
代码。
像这样;
On Error Resume Next
DataTable.ImportSheet Environment("STPFilePath"),Environment("TestScriptName"),"Action2"
'Check that an error occurs
If Err.Number <> 0 Then
'Identify specific error and deal with accordingly.
Select Case Err.Number
Case 20012 'Code for DataTable.ImportSheet operation failed
'List of instructions...
Case Else
'Unhandled error show to screen
MsgBox "Error: " & Err.Number & " (" & Err.Source & ") - " & Err.Description
End Select
'Finished handling the error
Call Err.Clear()
End If
我觉得最令人困惑的是这个线程中的错误信息。
-
"I need the description and not the number and the problem is to use Err.Details and not Err.Description in my case. Now, it is working." -
Err
对象不包含名为Details
的 属性 除非这是 QTP 特有的东西,但到目前为止我还没有能够快速找到任何东西 Google 搜索。所以你怎么能说 “它现在正在工作” 超出了我的范围。
您收到语法错误,因为您的 if 语句中的双引号未转义。
我不确定你想在这里做什么,也许使用 Err.Number 更有意义,但如果你想避免语法错误,请使用此代码:
If Err.Description = "The DataTable.ImportSheet operation failed. Invalid file."" \n ""Line (20): ""DataTable.ImportSheet Environment(""STPFilePath""),Environment(""TestScriptName""),""Action2""." Then
''' list of instructions
End If
此外,如果你想在 if 语句中比较 2 行,你不能使用 \n。使用 CHR(13)
或 CHR(10)
代替 \n。即
If Err.Description = "The DataTable.ImportSheet operation failed. Invalid file."& CHR(13) &"Line (20): ""DataTable.ImportSheet Environment(""STPFilePath""),Environment(""TestScriptName""),""Action2""." Then
'''list of instructions
End If
再次:使用 Err.Number 将更有意义,因为上面的任何 extra/missing space/newline 如果条件将失败条件。