Python:如果测试终止,使PhantomJS浏览器关闭

时间:2014-08-30 16:45:05

标签: python django selenium phantomjs

我正在使用Django应用。我使用Selenium和PhantomJS进行测试。

我今天发现每次我终止测试时(我在调试时做了很多),PhantomJS进程仍然存在。这意味着在调试会话之后,我可以留下200个僵尸PhantomJS进程!

当我终止Python调试过程时,如何让这些PhantomJS进程终止?如果有时间延迟,那也是有效的。 (即如果不使用2分钟就让它们终止,这样可以解决我的问题。)

1 个答案:

答案 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)