Как описать программирование 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 ответа

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

  4. Совет: чтобы ускорить ваш тест, вы можете использовать существующий с таймером, если вы используете .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
Другие вопросы по тегам