Un script que nous avons demandé à l'utilisateur pour quelques valeurs via des appels JavaScript successifs à window.prompt(). Selenium enregistre cette action, à la fois les textes d'invite et les valeurs que j'ai tapées, mais il ne semble pas pouvoir la lire correctement. Il «réussit» en ce qu'aucune erreur ne se produit, mais seule la première valeur de l'invite revient réellement à mon script. En outre, la valeur par défaut de la commande des enregistrements Sélénium rend la secondes valeur se retourne dans la place du premier, et le reste toujours vide:Commande de sélénium pour les invitations JavaScript un après l'autre
# [info] Executing: |answerOnNextPrompt | TEXT1 | |
# [info] Executing: |select | id | label=mychoice |
# [info] Executing: |answerOnNextPrompt | TEXT2 | |
# [info] Executing: |assertPrompt | Please enter a value for q1 | |
# [info] Executing: |answerOnNextPrompt | TEXT3 | |
# [info] Executing: |assertPrompt | Please enter a value for q2 | |
# [info] Executing: |answerOnNextPrompt | TEXT4 | |
# [info] Executing: |assertPrompt | Please enter a value for q3 | |
# [info] Executing: |assertPrompt | Please enter a value for q4 | |
je réorganisés dans ce qui me semble plus sensible à:
# [info] Executing: |answerOnNextPrompt | TEXT1 | |
# [info] Executing: |select | id | label=mychoice |
# [info] Executing: |assertPrompt | Please enter a value for q1 | |
# [info] Executing: |answerOnNextPrompt | TEXT2 | |
# [info] Executing: |assertPrompt | Please enter a value for q2 | |
# [info] Executing: |answerOnNextPrompt | TEXT3 | |
# [info] Executing: |assertPrompt | Please enter a value for q3 | |
# [info] Executing: |answerOnNextPrompt | TEXT4 | |
# [info] Executing: |assertPrompt | Please enter a value for q4 | |
Après cela, je reçois TEXT1 comme première valeur, mais le reste reste vide.
J'ai également essayé waitForPrompt à la place de chaque assertPrompt, mais pas de dés.
Je pense que Sélénium ne peut pas gérer réellement cette situation parce que answerOnNextPrompt semble avoir besoin de venir avant l'action qui déclenche l'invite, mais il est l'action qui déclenche l'invite suivante, donc après le premier déclenchement par select, il n'y a aucun moyen de le faire, car ils ne se cumulent pas.
J'aimerais avoir tort, mais ... des idées?
(Dans le cas contraire, je pourrais signaler un bug/quelque chose qu'ils doivent changer dans l'API, peut-être en combinant answerOnNextPrompt avec assertPrompt:. Il pourrait tout simplement prendre un argument optionnel avec la façon dont l'invite doit répondre)
La plate-forme est Selenium IDE 1.0.2 sur Firefox 3.5.3 sur win32.
Quel est le résultat après avoir réorganisé le test? – Santi
Désolé, ce n'était pas très clair, je l'ai édité. – Kev