Question

Je suis en œuvre un projet avec Sélénium 2, qui ne prend pas en charge les boîtes de dialogue de confirmation très bien.

Il existe une solution à cette limitation, vous écrasez tout le window.confirm pour renvoyer la valeur que vous devez revenir pour le cas de test spécifique.

Les chaînes suivantes peuvent être définies et exécuté:

public static final String CONFIRM_DIALOG_BOX = 
    "window.confirm = function(msg) { return true; }";

public static final String CANCEL_DIALOG_BOX = 
    "window.confirm = function(msg) { return false; }";

Cela semble assez simple comme méthode de modèle, mais j'ai plusieurs cas de test sur le même objet page où je dois confirmer / nier après l'interaction avec la page. Ainsi, ayant une seule méthode pour faire les tous ces tests ne fonctionne pas à la fois.

Injecter une commande à exécuter dans la méthode d'essai serait logique, mais mon objectif final est là pour permettre à notre personnel moins technique pour créer des tests en écrivant quelques chaînes en XML, puis l'exécuter avec le langage d'expression Spring; cela enlève une partie de la « facilité » de l'écriture des tests.

mise en garde majeure est que cette suite de tests est en fait une application en raison des exigences et non un ensemble de cas de test qui sont individuellement exécuter. Il serait beaucoup plus facile si elles étaient petites cas de test que je pouvais juste un cas s'étend de test abstrait et utiliser les mêmes routines d'installation et de démontage.

Ce que je suis à la recherche en fin de compte est quelque chose le long de cette méthode de modèle, mais je dois être capable de supporter plusieurs cas de test sur un seul objet page.

public final void executeTest(boolean confirmDialogBoxResponse) {

    // store normal functionality and allow us to return 
    // window.confirm to normal state upon completion of test.
    prepare(confirmDialogBoxResponse);

    testMethod(); // What about params to these methods?

    /* Adding an interface to the method would be nice, but 
     * would make things a bit more cumbersome for our
     * less technical staff, which would allow me to replace
     * the above with this:
     *
     *    executeTest(TestCommand command, confirmDialogResponse);
     *         command.execute(); // Still have params issue
     */

    // restore window.confirm to normal state -- if we cancel we stay 
    // on same page, and need to restore things as they were, the majority
    // of our confirm cases take you to new pages whereby window.confirm 
    // will be restored for us
    if (!confirmDialogResponse) {
        restore();
    }
}
Était-ce utile?

La solution

Avez-vous regardé Sélénium numéro 27 récemment (commentaire # 46) ? Il a quelques patchs ci-joint qui fournit un support pour recevoir une alerte et confirmer?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top