8
votes

Comment fermer un navigateur sur un serveur Selenium RC qui a perdu son client

Supposons qu'un client commence une session de sélénium sur un serveur RC, mais au milieu de la session, le client "est parti". Le navigateur restera ouvert et finalement, après assez de telles sessions abandonnées, il y aura suffisamment de navigateurs "orphelins" pour ralentir l'ordinateur.

  • Comment puis-je vous assurer que ces navigateurs sont fermés?
  • Pourquoi n'y a-t-il pas une partie "conservée" du protocole pour s'assurer que le client est toujours réactif et s'il ne tue pas la session?

  • 3 commentaires

    Vous devez accepter une réponse une fois que vous pensez que votre question a été répondue ...


    Sur la note similaire, pourrais-je réutiliser les sessions de navigateur existantes? :)


    @Nayn - oui tu peux! :) Il y a un argument que vous pouvez envoyer le sélénium rc quand il commence: -BrowserSreuse


    3 Réponses :


    14
    votes

    Une instance de navigateur a une session_id que vous pouvez stocker. EXEMPLE PYTHON:

    >>> import selenium
    >>> browser = selenium.selenium("localhost",4444, "*firefox", "http://www.santiycr.com.ar")
    >>> browser.start()
    >>> browser.sessionId
    u'b4ad1f1d624e44d9af4200b26d7375cc'
    


    1 commentaires

    Pour les navigateurs Firefox, vous pouvez découvrir la sessionID en cochant le nom du dossier de profil. Sur un système unique, PS AX | grep firefox-bin retournera quelque chose comme 12345? 1:00 / USR / LIB / ITICEWEASEL / Firefox-Bin -Profile / TMP / CustomProfileDir .



    2
    votes

    Vous pouvez également simplement tuer le processus:

    Windows: P>

    Taskkill / f / im iexplore.exe code>
    Taskkill / F / im firefox.exe CODE> P>

    * NIX: P>

    for i in `ps -A | grep firefox | awk '{print $1}'`; do kill -9 $i; done
    


    1 commentaires

    Cela va tuer tout Firefox, pas seulement le "zombie". Donc, si, par exemple, vous exécutez deux RC sur la même machine (pas que cela improbable), vous risquez de finir par tuer un F qui a été utilisé par l'autre RC.



    2
    votes
    >>> browser.stop()
    Does the same as Santi explains above.

    0 commentaires