QTP становится "не отвечает" - PullRequest
1 голос
/ 25 марта 2012

Я пытаюсь использовать метод childObjects.В некоторых случаях на больших страницах (со многими объектами) я вижу, что qtp становится «не отвечающим», а функция возвращает пустой список.

На другом компьютере это работает нормально, но если я продолжу увеличивать количество объектов на страницеЭто также не удается.

Я также пытаюсь на Facebook (после входа в систему) и на www.ynet.co.il, и в обоих случаях это не удалось на одном компьютере, а на другом все работает нормально (та же версия qtp11).

Что может вызвать эту проблему?Как я могу решить это?

Ответы [ 2 ]

1 голос
/ 25 марта 2012

В QTP есть тайм-аут, когда браузер слишком долго отвечает, если тайм-аут происходит во время ChildObjects, будет возвращен пустой список. Разница между вашими компьютерами, вероятно, в том, что один работает быстрее другого.

Чтобы обойти эту проблему, вы должны попытаться сузить число элементов, которые вы пытаетесь получить, добавьте описание, указав html tag, чтобы получить только подмножество всех дочерних объектов (я не Предположим, вам действительно нужен список всех элементов DOM). Если вам do действительно нужны все элементы DOM, то, возможно, вы можете переместить действие на сторону браузера, используя метод Browser RunScript (новый в QTP11).

Если вы решите использовать html tag в описании, лучше, если вы укажете, что это не регулярное выражение.

Set desc = Description.Create()
desc("html tag").Value = "div"
desc("html tag").RegularExpression = False
0 голосов
/ 02 августа 2013

Возможно установить время ожидания с помощью

Dim SaveDefaultTimeOut: SaveDefaultTimeOut=Setting ("DefaultTimeout")
Setting ("DefaultTimeout")=<newval>
Dim SaveWebTimeout: SaveWebTimeout=Setting ("WebTimeout")
Setting ("WebTimeout")=<newval>

для установки более высокого тайм-аута перед вызовом childObjects и восстановления исходных тайм-аутов с помощью

Setting ("DefaultTimeout")=SaveDefaultTimeOut
Setting ("WebTimeout")=SaveWebTimeout

Однако вы всегда должны стандартизировать значения времени среди клиентов QTP, чтобы получить сопоставимые результаты. Один из способов сделать это - установить их в библиотеке, вставив в библиотеку следующие строки (в глобальном масштабе, а не в любой подпрограмме):

Setting ("DefaultTimeout")=5000
Setting ("WebTimeout")=5000

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

...