2

私はdjango-seleniumを使用して、関与しているdjangoアプリでSeleniumテストを実行しています。この django アプリは、Qt とローカル Web サーバーを使用してローカルで実行されます。

したがって、テストを実行するには、アプリ用のサーバー、セレン サーバー、およびテストを実行するための webdriver インスタンスを起動する必要があります。

django-selenium はそのサーバーを a でセットアップしsubprocess.Popen('java -jar <path_to_server.jar>')、サーバーが実行されていない場合は、アプリケーションに対して同様に Web サーバーを実行します。

def run():
    path = os.path.join(os.getcwd(), 'main.py')
    server_running = is_server_running()

    if server_running is False:
        subprocess.Popen(['python', path, '-a'])

テストセットアップでは、次のようになります。

def setUp(self):
    self.server = Process(target= startServer.run)
    self.server.start()

そして解体へ。

def tearDown(self):
    # stop our server
    self.ff.get('http://localhost:{0}/QUIT'.format(settings.LISTEN_PORT))
    # stop the selenium server
    self.ff.get('http://localhost:4444/selenium-server/driver/?cmd=shutDownSeleniumServer')
    # close the browser
    self.ff.quit()
    self.server.terminate()

これを行うと、error: [Errno 10054] An existing connection was forcibly closed by the remote host. 接続を閉じるために呼び出しの間に追加しようとしましsleepたが、それは役に立ちませんでした。

私がおそらく間違いを犯している場所がわかりますか?閉鎖がリモートホストからのものである場合、最初にサーバーを閉じ、次にセレンサーバーを閉じてから、サーバーがシャットダウンした後にプロセスを終了しても問題はないはずだと思いました。

4

1 に答える 1

2

私もこの問題を抱えていたので、終了する前にブラウザを更新して修正しました。(ええ、奇妙です、私は知っています)。の前にこの行を追加してみてくださいself.ff.quit():

self.ff.refresh()
self.ff.quit()

理由はわかりませんが、それで修正されました。

于 2013-08-21T15:30:34.257 に答える