我正在开发一个 Django 应用程序。我正在使用 Selenium 和 PhantomJS 进行测试。
我今天发现每次我终止测试时(我在调试时做了很多),PhantomJS 进程仍然活着。这意味着在调试 session 之后,我可能会留下 200 个僵尸 PhantomJS 进程!
当我终止 Python 调试进程时,如何让这些 PhantomJS 进程终止?如果有时间延迟,那也行。 (即如果 2 分钟不使用它们就终止,这将解决我的问题。)
最佳答案
通常的设置是在类的teardown方法中退出PhantomJS浏览器。例如:
from django.conf import settings
from django.test import LiveServerTestCase
from selenium.webdriver.phantomjs.webdriver import WebDriver
PHANTOMJS = (settings.BASE_DIR +
'/node_modules/phantomjs/bin/phantomjs')
class PhantomJSTestCase(LiveServerTestCase):
@classmethod
def setUpClass(cls):
cls.web = WebDriver(PHANTOMJS)
cls.web.set_window_size(1280, 1024)
super(PhantomJSTestCase, cls).setUpClass()
@classmethod
def tearDownClass(cls):
screenshot_file = getattr(settings, 'E2E_SCREENSHOT_FILE', None)
if screenshot_file:
cls.web.get_screenshot_as_file(screenshot_file)
cls.web.quit()
super(PhantomJSTestCase, cls).tearDownClass()
如果不使用
unittest
测试用例,则必须自己使用 quit
方法。您可以使用 atexit
模块在 Python 进程终止时运行代码,例如:import atexit
web = WebDriver(PHANTOMJS)
atexit.register(web.quit)
关于Python:如果测试终止,则关闭 PhantomJS 浏览器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25584672/