2

我是QTP新手。

我可以使用对象存储库编写这样的语句:

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 找不到 web 元素,并且尝试访问 Exist 方法的测试错误。

有没有办法使用描述性编程来检查页面上不存在元素?

4

2 回答 2

2
  1. 看看第一个 if 语句,特别是这一行:If Trim(DataTable.Value("ExpectedValue")) = ""。你说'如果 ExpectedValue 为空并且对象不存在,则报告错误' 这真的是你想要的还是你想在'not empty' 上测试 ExpectedValue: If Trim(DataTable.Value("ExpectedValue")) <> ""

  2. VBScript 中的连接是用一个&符号而不是用一个来完成的+,这个语句Browser("MyApp").Page("MyPage").WebElement("text:=" + DataTable.Value("ExpectedValue")).Exist将解析为Browser("MyApp").Page("MyPage").WebElement(0).Exist,导致意想不到的结果。改为使用"text:=" & DataTable.Value("ExpectedValue")

  3. QTP 有一些怪癖,对对象的 .exist 属性进行测试就是其中之一(我在这里代表 QTP10 发言)。这听起来很奇怪,但在某些情况下(不幸的是,我不记得哪一次,如果我有空闲的时间,我会尝试重现它).exist返回一个 False,它在条件语句中本身不被识别为 False。测试对象是否不存在的最佳方法是显式测试存在属性是否等于 false: If Browser("foo").Page("bar").WebElement("xizzy").exist = False then print "Object does not exist!)

  4. 提示:为了加快测试速度,您可以将存在与计时器一起使用,如果使用.exist(0)它将立即测试对象的存在,而不使用您在 testsettings 中设置的同步计时器。

也许这不能直接解决您的确切问题,但它会提供更可靠的结果并最终引导您找到解决方案。使用该方法测试对象是否不存在.Exist是正确的方法。当您遇到错误时,还有其他问题。例如浏览器或页面不存在。

于 2012-11-08T07:45:49.337 回答
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
于 2014-01-21T14:47:53.087 回答