Intercepter plusieurs fenêtres [Java][UISpec4J] - Java - Programmation
Marsh Posté le 31-07-2008 à 16:34:16
Bonjour,
Je suis l'un des auteurs de UISpec4J.
Pour le moment, il n'y a pas de moyen direct pour intercepter simultanément plusieurs JFrame. C'est techniquement faisable, mais le besoin ne s'est pas encore présenté à nous, et la plupart de nos API sont adaptées aux cas les plus courants où l'on intercepte une seule fenêtre principale ou bien des séquences de fenêtres.
Avec les API actuelles, il faut un peu ruser pour résoudre votre problème.
Tout d'abord, vous ne pouvez pas utiliser la méthode UISpecTestCase.getMainWindow(), qui comme sont nom l'indique s'attend à trouver une seule fenêtre principale. Le mieux reste que vous utilisiez un TestCase classique, en prenant bien soin d'appeler UISpec.init() dans un bloc d'initialisation statique pour prendre de vitesse la mécanique d'initialisation de Swing et installer la mécanique d'interception.
Ensuite, dans votre test, vous pouvez récupérer deux fenêtres en imbricant deux appels à WindowInterceptor.run(), comme illustré dans l'exemple suivant :
Code :
|
Cela vous aide-t-il ?
Si vous avez de nouveau besoin d'aide et que l'usage de l'anglais vous rebute, vous pouvez nous contacter directement via contact@uispec4j.org
Cordialement,
Régis.
Marsh Posté le 01-08-2008 à 15:17:06
Bonjour,
Déjà merci beaucoup pour l'aide proposée. Alors en effet, cette méthode fonctionne parfaitement pour mon cas de base. Mais lorsque je cherche à l'appliquer sur mon projet plus complexe, il y a alors l'erreur suivante :
Citation : |
J'ai bien sur essayé d'allonger le temps d'attente pour l'interception, sans succès. Mais en fait, en regardant bien le code source, j'ai découvert que sur les 3 frames du projet complexes, les 2 dernières sont en fait des JDialog. Peut-être en est-ce la cause, bien qu'elles ne soient pas modales (elles ne bloquent pas le focus lors de l'exécution). Je vais essayer tout de même avec cette méthode :
Code :
|
En plaçant l'interception de la première JFrame dans le run()
Merci beaucoup pour l'aide en tout cas.
Marsh Posté le 28-07-2008 à 10:28:26
Bonjour,
Je suis actuellement en train de tester UISpec4J afin de pouvoir automatiser des tests d'interface graphique Swing. Cependant, mon application, lance au démarrage 2 fenêtres en simultanée ce qui fait planter la commande d'interception des fenêtres, me retournant l'erreur suivante :
Exception in thread "main" junit.framework.AssertionFailedError: Unexpected window shown - this window should be handled with Wind
owInterceptor.
Window contents:
<window title="1">
<button label="0"/></window>
at org.uispec4j.interception.toolkit.UISpecDisplay.assertAcceptsWindow(UISpecDisplay.java:117)
...
Le compilateur dit que le problème provient lors de la création via new Frames2() dans AdapterFrames2.java
Y'a t'il moyen d'intercepter 2 fenêtres, ou plus, en simultanée. Les fenêtres sont des JFrames et donc à priori doivent être interceptées avec WindowInterceptor, mais je ne trouve pas de solution à la récupération de plsuieurs éléments. Merci de ne pas me proposer d'utiliser un autre outil (Jemmy et cie) car mon objectif est justement de comparer les différents outils.
Merci d'avance
Nicolas
NB : je joins les parties intéressantes des différents fichiers (le code est pas beau car ce sont des reprises de fichiers déjà existants, mais il est bon).
Frames2.java (GUI) :
FICHIER IMPORTANT : AdapterFrames2.java (interception de fenêtre)
UISpec4JFrames2.java (Définition des actions)
Message édité par vivi5421 le 28-07-2008 à 10:58:40