La commutation d'une nouvelle fenêtre avec le Sélénium/Rapporteur Javascript

La recherche d'un peu d'aide sur la façon dont je devrais être prise en main d'un nouveau "pop-up" de la fenêtre qui est déclenché à l'écran après que je clique sur un bouton "connexion".

Je suis en mesure d'obtenir à quand la fenêtre est de l'affichage, mais je ne crois pas que le code que j'utilise actuellement pour saisir la fenêtre "gérer" fonctionne correctement. Ma situation est un peu différente dans le fait que je suis en utilisant le rapporteur à l'intérieur de mes pages, mais la nouvelle fenêtre vient n'est PAS angulaire de la base, donc je dois passer de l'un à l'aide de seulement selenium WebDriver alors que je suis dans cette fenêtre. (Quelqu'un a une idée s'il pouvait y avoir des problèmes avec cette approche?)

Vous trouverez ci-dessous l'extrait de code que j'utilise pour créer le sélénium pilote, ainsi que ci-dessous que le commutateur "/poignée de maintien" de la nouvelle fenêtre qui s'est popping up. Je sais qu'il ne fonctionne pas correctement parce que je reçois "Aucun Élément" erreurs dans le code qui suit en essayant de trouver un formulaire sur la page.

    //Create selenium webdriver /driver
    var webdriver = require('selenium-webdriver');

    var driver = new webdriver.Builder().
        withCapabilities(webdriver.Capabilities.chrome()).
        build();

  //Now make sure that the new window is popping up and we are navigating   correctly to it
      var handlePromise = browser.driver.getAllWindowHandles();
      handlePromise.then(function (handles) {
        //parentHandle = handles[0];
        var popUpHandle = handles[1];

        //Change to new handle
        browser.driver.switchTo().window(popUpHandle);

        var popUpHandleFinal = browser.driver.getWindowHandle();
        expect(popUpHandleFinal).toEqual(popUpHandle);
    });

Couple de choses à ce sujet:

  1. Si je supprime le "navigateur" dans la ligne "du navigateur.le pilote.switchTo().fenêtre(popUpHandle)" donc, il se lit comme "pilote.switchTo().fenêtre(popUpHandle)" je recevoir en retour et l'erreur qui se lit comme" UnknownError: erreur inconnue: "nom" doit être une chaîne non vide" Après avoir fait quelques recherches sur ce qu'il est parce que le "switchTo()" méthode du conducteur ne peut pas être null. Cette erreur est effacée si je viens d'utiliser le code ci-dessus.
  2. Je ne suis pas sûr à 100% si je dois utiliser le rapporteur (global "navigateur" var) ou à l'aide de la droite "pilote" (Sélénium) que j'ai mis en avant ce que le moyen d'obtenir la windows.

Merci pour votre aide

Peut-être qch connexes: stackoverflow.com/questions/28511013/....
Si vous êtes déjà dans le cadre d'un travail de rapporteur pilote, vous n'avez pas besoin de démarrer un distinct webdriver-instance en interne. (Qui sera probablement confondre le navigateur pour avoir deux contrôleurs à distance). Le rapporteur expose le raw webdriver son aide via browser.driver, donc ça devrait être correct à utiliser.
C'était mon principal problème. Je vous remercie. Une fois que j'ai pris paramètre de l'autre conducteur, puis retourna à l'aide du navigateur.le pilote, après quelques essais, j'ai été en mesure de l'obtenir pour fonctionner.

OriginalL'auteur parchambeau | 2015-02-28