PhantomJS et Selenium Webdriver - Comment effacer une session
Je suis en utilisant Selenium Webdriver (Java) et PhantomJS pour tester un complexe JS site. Mon problème, c'est que le PhantomJS navigateur conserve la session entre deux tests qui conduit à des erreurs dans la configuration de test.
Si je lance le teste avec Firefox tout fonctionne bien parce que Firefox utilise un propre session pour chaque cas de test.
Ma première tentative pour résoudre le problème a été de vider le local de stockage par JS injection. Les Cookies sont supprimés par le Sélénium exposés API driver.manage().deleteAllCookies();
Mais l'exécution de JavaScript sans la visite d'une page n'est pas autorisé. Donc à partir du navigateur à "about:blank" conduit à une erreur.
Alors, comment dois-je configurer mon phantomjs webdriver pour effacer la session?
Je suis l'aide de phantomjs et webdriver parce que le sélénium, les services de la grille s'est avéré être pas assez stable. Donc, je commence mon phantomjs exemple comme ça:
phantomjs --webdriver=1234
Ouais, je pense que c'est une sorte de bug ou qui fuit spec à l'intérieur de phantomjs. Parce que l'url actuelle est zéro entre les deux tests.
J'ai deux tests avec deux url différentes, trop. Mais les cookies sont clairement plus de fuite
Je retire ce que, il semble très bien fonctionner. Voici un test des pensions de + tests: github.com/mbrevda/phantomjs-test
OriginalL'auteur schlingel | 2014-04-03
Vous devez vous connecter pour publier un commentaire.
Le fait que PhantomJS garde des sessions entre les tests est un problème connu dans GhostDriver, Selenium Webdriver mise en œuvre de PhantomJS.
Je suppose que ce problème sera résolu avec la PhantomJS 2 communiqué. Le bug est déjà fixé dans GhostDriver 1.1.1, mais il n'y a pas de PhantomJS version qui inclut cette GhostDriver version.
OriginalL'auteur oberlies
Je sais que le Sélénium de la Grille a un "cleanSession" option si vous utilisez GhostDriver. Aussi, je suis assez sûr que la régulière WebDriver classe a une option pour cela sur un local WebDriver exemple:
Si vous regardez le changelog sur le Sélénium 2.40.0, il a un PhantomJS changement. Étiez-vous à l'aide de la dernière 2.41.0 grille avec ghostdriver? Si pas, il peut être la peine d'essayer de nouveau. Je suppose que vous n'utilisez pas Chrome ou IE.
... Que dit-je utiliser PhantomJS comme navigateur. Et je n'utilise pas de Sélénium de la Grille. Je viens de l'utiliser régulièrement le sélénium avec ses webdriver api. (phantomjs --webdriver=PORT commence le webdriver compatible phantomjs navigateur). Mais le problème, c'est que la session est persistant et donc ma boutique en ligne commence à un autre point de départ, quand je lance le deuxième cas de test.
Le changement de 2.40.0 peuvent aussi influer sur côté client PhantomJS. Utilisez-vous le PhantomJS option: phantom.cookiesEnabled = true; ? Vous devez avoir un accès complet à biscuits à l'aide d'un JavascriptExecutor objet; avez-vous essayé?
Viens de vérifier ma dépendance à mon pom.xml. J'utilise 2.40. Puncto Cookies Activés. Je peux me reposer les cookies via JS. Mais pour ce que j'ai à charge la page en premier. Exécuter du JS et de charger la Page à nouveau. (Si je ne fais pas que je obtenir DOM exceptions concernant la Sécurité). Qui suce assez bien.
OriginalL'auteur djangofan
La version 2.0 de PhantomJS résoudre ce problème. Si vous avez un Environnement Linux, vous avez besoin de cloner les sources et les compiler, comme ceci:
Plus d'info ici
OriginalL'auteur Giuseppe Lopes