Próbuję przetestować za pomocą QTP aplikację internetową, która używa ajax4jsf do implementacji funkcji ajax. QTP nie jest w stanie rozpoznać, kiedy ajax skończył. Przeczytałem, że zestaw narzędzi do rozbudowy sieci dostarczany z QTP 9.5 i QTP 10 jest rozwiązaniem mojego problemu. Nie mogę jednak zrozumieć, w jaki sposób to może mi pomóc: muszę znać stan gotowości obiektu httpRequest i kontynuować test, gdy stan jest "ukończony". Ale nie wiem, jak dotrzeć do httpRequest z zestawu narzędzi do rozszerzenia sieci. Każda pomoc będzie doceniona.QTP Web extensibilty toolkit i ajax
Odpowiedz
Dziękuję za odpowiedzi.
Udało nam się rozwiązać nasz problem za pomocą zestawu narzędzi QTP Extensibilty: A4j używa kolejki słuchaczy, które budzą się przed i po ajax (w zależności od typu słuchacza). W naszym rozwiązaniu zaimplementowaliśmy funkcję Jscript dla każdego komponentu ajax (np. WebButton):
1. Inicjalizuj zmienną globalną na 0
2.rejestruje nową funkcję jako słuchacz typu onafterajax:
_elem.ownerDocument.parentWindow.A4J.AJAX.AddListener({
onafterajax: function(req, event, data) {
globalVariable = 1;
}
});
- Kliknij przycisk
iść do pewnego rodzaju pętli zajęty oczekujących:
while (globalVariable != 1) { _util.Wait(250); }
Funkcja, którą zarejestrowaliśmy, jest wywoływana, gdy ajax jest zakończony i zmienia globalną zmienną tak, że pętla while zostanie zakończona. Wiem, że to jest brzydkie, ale działa świetnie.
Naszym jedynym problemem jest to, że QTP 10 implementuje _util.wait, a QTP 9.5 nie. Bez czekania przeglądarka utknie w nieskończonej pętli, a zarejestrowana funkcja nigdy nie zostanie wywołana. Jakiekolwiek rozwiązanie dotyczące implementacji nieprzygotowanego oczekiwania w Jscript byłoby najbardziej docenione.
Na podstawie mojego doświadczenia z testami automatyzacji dla aplikacji sieciowej z połączeniami AJAX sugeruję, aby rozważyć następujące kwestie.
Object Recognition mechanizm QTP za poszukuje GUI obiektów z systemu Windows uchwyt. W miarę możliwości używaj tylko obiektów GUI. Testowanie ręczne nie dotrze do obiektu XmlHttpRequest, ale nie przeszkodzi Ci w testowaniu funkcjonalnym. Możesz nadal synchronizować różne zdarzenia w oparciu o zmianę właściwości obiektów GUI. Na przykład. "ładowanie ..." obraz lub tekst pojawił się/zniknął. Lista rozwijana przestała dodawać nowe elementy. Przycisk staje się włączony/wyłączony.
Jeśli jest to Twoja aplikacja wewnętrzna, możesz opracować bardziej przyjazne wsparcie dla QTP, a tutaj możesz korzystać z przewodników z pakietu narzędzi do rozszerzania. Dodatkowo, jako opcję kompilacji testowej możesz dołączyć obiekt GUI (niewidoczny obraz lub element tekstowy) i użyć go do wskazania stanów transakcji AJAX.
Wreszcie, nadal możesz uzyskać dostęp do DOM bezpośrednio, aby dotrzeć do obiektów innych niż GUI, chociaż nie mam w ten sposób informacji o używaniu obiektu XmlHttpRequest.
Dziękuję Albert Gareev
Mam nadzieję, że znajdziesz następujący artykuł przydatny.
synchronizacji dla aplikacji AJAX http://relevantcodes.blogspot.com/2009/06/synchronization-for-ajax-applications.html
Dziękuję Albert Gareev
- 1. Google Web Toolkit (GWT) + XPath
- 2. Kiedy nie używać Google Web Toolkit?
- 3. Ukryte funkcje Google Web Toolkit 2
- 4. HTML Web Worker i Ajax jquery call
- 5. jak wdrożyć tempomat z QTP?
- 6. Który framework Java najlepiej działa z Google Web Toolkit?
- 7. Przewodniki dla projektantów interfejsów użytkownika pracujących w Google Web Toolkit
- 8. ERR_SPDY_PROTOCOL_ERROR Ajax .net web api
- 9. Czy powinienem używać Google Web Toolkit do mojej nowej aplikacji webowej?
- 10. Jak scalić GWT (Google Web Toolkit) projekt i dynamiczny projekt WWW (np. Java Web App/Servlets) w środowisku Eclipse?
- 11. Metoda postów AJAX i Web Api - jak to działa?
- 12. WPF ToolKit DataGrid Wydajność
- 13. Wywołanie Ajax Jquery do WEB API
- 14. Pomost, preflight i ajax
- 15. Szablon Catalyst :: Toolkit render wyjściowy
- 16. Mojolicious :: Lite z Template Toolkit
- 17. Facebook opengraph i zawartość AJAX
- 18. Debugowanie aplikacji Google Web Toolkit z błędem po wdrożeniu w Google App Engine
- 19. Jak mogę dodać wiersze do zestawu elastycznego Google Web Toolkit w UiBinder?
- 20. Jak wywoływać skrypty kodowane w VSTS do QTP?
- 21. Python web framework z CRUD obsługiwany przez AJAX
- 22. Wywołanie jQuery $ .ajax do Web Api z tablicami łańcuchów
- 23. Skrobanie Heroku i Web
- 24. Uwierzytelnianie systemu Windows i Asp.Net Web API
- 25. jak wywołać api sieci web za pośrednictwem domeny ajax?
- 26. Integracja AJAX i PHP
- 27. jQuery ajax i SSL?
- 28. AJAX i Jinja2
- 29. Ajax, CSRF i DELETE
- 30. ASP.NET MVC i AJAX