我是QTP新手。
我可以使用Object Repository编写这样的语句:
If Trim(DataTable.Value("ExpectedValue")) = "" _
And Not Browser("MyApp").Page("MyPage").WebElement("MissingDataBanner").Exist Then
Reporter.ReportEvent micFail, "MissingDataBanner", "Element expected"
End If
虽然我可以使用描述性编程来检查确实存在的元素的属性......
If Not Browser("MyApp").Page("MyPage").WebElement("text:=" + DataTable.Value("ExpectedValue")).Exist Then
Reporter.ReportEvent micFail, "My Data Field", "Element does not contain expected value"
End If
当我尝试这样的事情时:
If Trim(DataTable.Value("ExpectedValue")) = "" _
And Not Browser("MyApp").Page("MyPage").WebElement("text:=" + DataTable.Value("ExpectedValue")).Exist Then
Reporter.ReportEvent micFail, "MissingDataBanner", "Element expected"
End If
当然QTP找不到网页元素,并且试图访问Exist方法的测试错误。
有没有办法使用描述性编程来检查页面上是否存在元素?
答案 0 :(得分:2)
看看第一个if语句,特别是这一行:If Trim(DataTable.Value("ExpectedValue")) = ""
。您说&#39;如果ExpectedValue为空并且该对象不存在,则报告错误&#39;这真的是你想要的,或者你想测试ExpectedValue&#39;不是空的&#39;:If Trim(DataTable.Value("ExpectedValue")) <> ""
?
VBScript中的连接使用&
符号而不是+
完成,此语句Browser("MyApp").Page("MyPage").WebElement("text:=" + DataTable.Value("ExpectedValue")).Exist
将解析为Browser("MyApp").Page("MyPage").WebElement(0).Exist
,从而导致意外结果。请改用"text:=" & DataTable.Value("ExpectedValue")
。
QTP有一些怪癖,对对象的.exist属性进行测试就是其中之一(我在这里代表QTP10)。这听起来很奇怪,但在某些情况下(不幸的是我不记得哪一次,如果我有一个备用的minut我将尝试重现它),.exist
返回一个False,在本机上不被识别为False in条件陈述。测试对象是否不存在的最佳方法是显式测试exists属性是否等于false:If Browser("foo").Page("bar").WebElement("xizzy").exist = False then print "Object does not exist!)
。
提示:为了加快测试速度,您可以使用带有计时器的exists,如果您使用.exist(0)
它将立即测试对象的存在而不使用您设置的同步计时器在你的测试中。
也许这不是您确切问题的直接解决方案,但它会提供更可靠的结果,最终会引导您找到解决方案。使用.Exist
方法测试对象是否不存在是正确的方法。当你遇到错误时,还有其他错误。例如,浏览器或页面不存在。
答案 1 :(得分:0)
嗨希望这会对你有所帮助..谢谢..
Set NavigationTab = Browser ().Page().WebElement()
CheckExist ( 10 , NavigationTab )
Function CheckExist ( intDelay , object )
object.RefreshObject
' -- validating the object is exist or not.
If object.Exist ( intDelay ) Then
CheckExist = True
Else
CheckExist = False
End If
End Function