我正在使用Django应用。我使用Selenium和PhantomJS进行测试。
我今天发现每次我终止测试时(我在调试时做了很多),PhantomJS进程仍然存在。这意味着在调试会话之后,我可以留下200个僵尸PhantomJS进程!
当我终止Python调试过程时,如何让这些PhantomJS进程终止?如果有时间延迟,那也是有效的。 (即如果不使用2分钟就让它们终止,这样可以解决我的问题。)
答案 0 :(得分:3)
通常的设置是在类的拆解方法中退出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)