如何在 Selenium 测试结束时关闭浏览器窗口?

软件测试 硒网络驱动程序 Python 铬驱动程序 浏览器
2022-01-31 14:11:44

我已经用谷歌搜索了答案,但.stop()经常提到的对我不起作用。运行测试的 Chrome 窗口保持打开状态。

def test_getResults(self):
    sel = selenium('localhost', 4444, "*chrome", 'http://blackpearl/')
    sel.start()
    # do stuff

def tearDown(self):
    sel = selenium('localhost', 4444, "*chrome", 'http://blackpearl/')
    sel.close()
    sel.stop()

有任何想法吗?我将 Selenium Server 2.8.0 与 Python 2.6 一起使用,并且主要使用 Chrome 14 窗口进行测试。

4个回答

driver.close()并且driver.quit()是在 Selenium WebDriver 中关闭浏览器会话的两种不同方法。

driver.close()- 它关闭设置焦点的浏览器窗口。

driver.quit()– 它基本上调用 driver.dispose 方法,该方法依次关闭所有浏览器窗口并优雅地结束 WebDriver 会话。

您应该driver.quit()在想要结束程序时使用。它将关闭所有打开的浏览器窗口并终止 WebDriver 会话。如果您在程序结束时不使用driver.quit(),WebDriver 会话将无法正常关闭,文件也不会从内存中清除。这可能会导致内存泄漏错误。

您实际上是在您的 tearDown() 函数中创建第二个 Selenium 会话。您需要将 setUp() 中创建的会话放入实例变量中,然后在 tearDown() 中关闭该会话。

class TestFoo(unittest.TestCase):
    def setUp(self):
        self.selenium = selenium('localhost', 4444, "*chrome", 'http://blackpearl/')
        self.selenium.start()

    def tearDown(self):
        self.selenium.stop()

    def test_bar(self):
        self.selenium.open("/somepage")
        #and so forth

我在 java 和 C# 中都使用过 Web Driver,我使用

在 Java 中:

WebDriver driver;      
driver.quit();

在 C# 中:

IWebDriver Driver;
Driver.Quit();

在 Python 中,使用 Chrome 的 selenium webdriver,我需要在stop_client()之前调用close()

from selenium import webdriver

在设置()中:

options = webdriver.chrome.options.Options()
options.add_argument("--disable-extensions") # optional and off-topic, but it conveniently prevents the popup 'Disable developer mode extensions' 
self.driver = webdriver.Chrome(chrome_options=options)

在 tearDown() 中:

self.driver.stop_client()
self.driver.close()