Как описать программирование QTP11, как проверить, что элемент отсутствует?
Я неофит 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 не может найти веб-элемент и тестовые ошибки, пытающиеся получить доступ к методу Exist.
Есть ли способ использовать описательное программирование, чтобы проверить, что элемент не существует на странице?
2 ответа
взгляните на первое выражение if и, в частности, на эту строку:
If Trim(DataTable.Value("ExpectedValue")) = ""
, Вы говорите: "Если ExpectedValue пусто, а объект не существует, то сообщаете об ошибке". Это действительно то, что вам нужно, или вы хотите проверить ExpectedValue на "not empty":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). Звучит странно, но в некоторых случаях (к сожалению, я не могу вспомнить, какой раз, если у меня будет запасная минутка, я попытаюсь воспроизвести ее),
.exist
возвращает False, которое изначально не распознается как False в условном выражении. Лучший способ проверить, не существует ли объект, - это явный тест, если свойство существующие равняется ложному:If Browser("foo").Page("bar").WebElement("xizzy").exist = False then print "Object does not exist!)
,Совет: чтобы ускорить ваш тест, вы можете использовать существующий с таймером, если вы используете
.exist(0)
он немедленно проверит существование объекта без использования таймеров синхронизации, которые вы установили в ваших настройках теста.
Возможно, это не является прямым решением вашей конкретной проблемы, но дает более надежные результаты и в конечном итоге приведет вас к решению. Тестирование, если объект не существует с .Exist
метод является правильным способом сделать это. Когда вы получаете ошибки, значит что-то не так. Например, браузер или страница не существует.
Привет Надеюсь, это поможет вам.. Спасибо..
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