К вашему сведению можно также использовать map.keySet()
и map.values()
, если Вы только интересуетесь ключами/значениями карты а не другого.
Спасибо за ответы.
Нам удалось решить нашу проблему с помощью набора инструментов QTP Extensibilty:
A4j использует очередь слушателей, которые пробуждаются до и после ajax (в зависимости от типа слушателя).
В нашем решении мы реализовали функцию Jscript для каждого компонента ajax (например, webButton):
1. Инициализируйте глобальную переменную до 0
2. регистрирует новую функцию как прослушиватель типа onafterajax:
_elem.ownerDocument.parentWindow.A4J.AJAX.AddListener({
onafterajax: function(req, event, data) {
globalVariable = 1;
}
});
Войдите в своего рода цикл "занято-ожидание":
while (globalVariable! = 1) {
_util.Wait (250);
}
Зарегистрированная нами функция вызывается по завершении ajax и изменяет globalVariable, поэтому цикл while завершается. Я знаю, что это уродливо, но работает отлично.
Наша единственная проблема в том, что QTP 10 реализует _util.wait, а QTP 9.5 - нет. Без ожидания браузер застрянет в бесконечном цикле, и зарегистрированная функция никогда не будет вызвана. Было бы очень полезно любое решение, касающееся реализации в Jscript ожидания ожидания без занятости.
Основываясь на моем опыте автоматизации тестов для веб-приложений с помощью вызовов AJAX, я предлагаю вам принять во внимание следующее.
Механизм распознавания объектов QTP ищет GUI ] объекты с дескриптором Windows. Поэтому по возможности используйте только объекты графического интерфейса. При тестировании вручную вы также не достигнете объекта XmlHttpRequest, но это не помешает вам выполнить функциональное тестирование. Вы по-прежнему можете синхронизировать различные события на основе изменения свойств объектов графического интерфейса. Например. Появилось / исчезло изображение или текст "загрузка ...". Выпадающий список перестал добавлять новые элементы. Кнопка становится включенной / отключенной.
Если это ваше внутреннее приложение, вы можете разработать более удобную поддержку QTP, и здесь вы можете использовать руководства из набора инструментов расширяемости. Кроме того, в качестве варианта тестовой сборки вы можете включить объект GUI (невидимое изображение или текстовый элемент) и использовать его для обозначения состояний транзакций AJAX.
Наконец, вы все еще можете напрямую обращаться к DOM для доступа к объектам, не относящимся к GUI, хотя я не У меня нет информации об использовании объекта XmlHttpRequest таким образом.
Спасибо, Альберт Гареев
Надеюсь, вам пригодится следующая статья.
Синхронизация для приложений AJAX. http://relevantcodes.blogspot.com/2009/06/synchronization-for-ajax-applications.html
Спасибо, Альберт Гареев