Контрольная точка Проверка несуществования объекта - PullRequest
1 голос
/ 07 мая 2019

Мы тестируем графический интерфейс с UFT 14.52.Для каждого Popup, Schema, View у нас есть один компонент.Я хотел бы добавить точки проверки для каждого компонента, чтобы я мог проверить, что приложение находится в правильном состоянии.

Например: у меня есть это всплывающее окно и компонент, который обрабатывает всплывающее окно (выбор улицы и нажатие кнопок).

Popup

Когда компонент запускается, я хочу убедиться, что всплывающее окно работает.С контрольными точками UFT это работает безупречно, используя в качестве идентификации включенный.

enabled as identification

Но если я хочу получить точку проверки в конце (Проверьте, закрыто ли всплывающее окночерез включен) я получаю «исключение объекта не найдено из UFT», как и ожидалось, потому что данное всплывающее окно закрыто.Проверка того, что объект не существует с помощью JavaObject.Exist(5), невозможна, поскольку он действительно будет ожидать тайм-аут, а затем вернет состояние.

Есть ли обходной путь для этого?Есть ли что-то похожее на javaObject.NonExists(5)?Является ли эта проверка состояния в конце даже полезной?

1 Ответ

2 голосов
/ 08 мая 2019

Следует отметить, что параметр тайм-аута до Exist по умолчанию не равен нулю, поэтому, если вы хотите, чтобы он сразу возвращался, если объект не существует, вы должны использовать obj.Exist(0).

Если мое понимание верно, вы хотите имитировать поведение Exist, чтобы в случае сбоя условия (в этом случае объект действительно существовал), функция не возвращала False немедленно, но ожидает тайм-аут, пока он не станет True (объект не существует).

Если это так, вы можете попробовать это:

Public Function NotExist(ByRef test_object, ByVal timeout)
       Deadline = DateAdd("s", timeout, Now)
       While test_object.Exist(0)
            If DateDiff("s", Now, Deadline) < 0 Then
                NotExist = False
                Exit Function
            End If  
            test_object.RefreshObject ' not sure if this is needed
       Wend

       NotExist = True
End Function
RegisterUserFunc "JavaObject", "NotExist", "NotExist"

Единственная тонкая часть здесь - это RefreshObject, который, на мой взгляд, был необходим, но он работал без него, когда я попробовал его с Web-надстройкой (я не использую Java).

Я думаю, что это необходимо, поскольку UFT кэширует объект, если он найден, но, возможно, Exist очищает этот кеш (дальнейшее прочтение этого механизма кэширования ).

...