2013-02-15 6 views
0

En essayant d'exécuter quelques tests, et je cours dans un barrage routier,Le sélénium ne se connecte pas

c'est le début du script où il est intercepté.

from selenium import selenium 
import subprocess 
import time 
import sys 
import socket 
from os.path import dirname 
import unittest 
from pushdata import push 


class selenium_tests(unittest.TestCase): 

    @classmethod 
    def setUpClass(self): 
     directory = dirname(__file__) 
     path = directory + '/selenium-server-standalone-2.28.0.jar' 
     sub = subprocess.Popen('exec java -jar ' + path, 
           stdout=subprocess.PIPE, 
           stderr=subprocess.STDOUT, 
           shell=True) 
     self.selenium_server = sub 
     count = 0 
     while True: # ensure the server is established 
      try: 
       self.selenium = selenium("localhost", 
             4444, 
             "*chrome", 
             "http://127.0.0.1:8000/resources/") 
       self.selenium.start() 
       break 
      except socket.error, v: 
       count += 1 
       if count == 10: 
        message = "- Selenium server took to long to establish" 
        print "\n", v, message 
        sys.exit() 
       time.sleep(1) 

Pour exécuter les tests que je utilise la commande:

python -m unittest -v selenium_tests_mod 

qui soulève:

[Errno 111] Connection refused - Selenium server took to long to establish 

donc je sais qu'il a du mal à établir la connexion, tout simplement pas pourquoi?

Note: quand je lance cela en utilisant le framework de test de django cela fonctionne, mais pas lorsque je tente de l'exécuter manuellement

EDIT:

quand je lance le serveur de sélénium dans un séparé shell cela fonctionne

java -jar selenium-server-standalone-2.28.0.jar 

maintenant je suppose cela peut être la cause:

sub = subprocess.Popen('exec java -jar ' + path, 
           stdout=subprocess.PIPE, 
           stderr=subprocess.STDOUT, 
           shell=True) 

Répondre

0

travaillé que

dirname(__file__) 

retournait une chaîne vide si recherché et trouvé ceci: Find current directory and file's directory

donc la réponse telle que diffusée par Piotr Dobrogost, était d'utiliser

dirname(realpath(__file))