def start_selenium_server(display=":99"): """Start a selenium server on a random port.""" for _ in range(10): info("Bringing up selenium") port = pick_random_port() SELENIUM_SERVER_JAR = os.environ["SELENIUM_SERVER_JAR"] sel_server = Popen( ["java", "-jar", SELENIUM_SERVER_JAR, "-port", str(port)], env=dict(os.environ, DISPLAY=display), stdout=PIPE, stderr=PIPE, ) # Stupid selenium takes an age to start. I can't really sleep # until I can tell it's done sel_server.port = port if wait_for_selenium_start(sel_server): return sel_server else: continue else: raise Exception("Failed to start selenium server")