.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窗口进行测试。
#1 楼
driver.close()
和driver.quit()
是在Selenium WebDriver中关闭浏览器会话的两种不同方法。driver.close()
-关闭设置焦点的浏览器窗口。driver.quit()
–它基本上调用driver.dispose方法,其中依次关闭所有浏览器窗口并正常结束WebDriver会话。无论何时要结束程序,都应使用
driver.quit()
。它将关闭所有打开的浏览器窗口,并终止WebDriver会话。如果在程序末尾不使用driver.quit()
,则WebDriver会话将无法正确关闭,并且不会清除内存中的文件。这可能会导致内存泄漏错误。评论
您好Sneha Singh,欢迎来到Stack Overflow。您的答案是一个好的开始,但是您可以通过添加更多上下文来使其更好。您能描述一下driver.close和driver.quit方法之间的区别以及如何在它们之间进行选择吗?也许包括指向官方文档的链接也会有所帮助-请参阅“如何回答”中的建议。
–文斯·鲍德伦(Vince Bowdren)
16年8月18日在17:00
带有webdriver.Firefox()的wd的上下文管理器是否可以帮您退出?
–本体
19-10-27在15:34
这是一个非常老的问题,但也许我的经验会对某人有所帮助。我想关闭浏览器页面,但不关闭浏览器本身。 driver.close()未能按预期工作,因此我只是改用driver.get('about:blank')。
–史密斯(Smit Johnth)
11月4日16:57
#2 楼
您实际上是在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
#3 楼
我已经在Java和C#中使用了Web Driver,并且在Java中使用了在Java中:
WebDriver driver;
driver.quit();
在C#中:
IWebDriver Driver;
Driver.Quit();
#4 楼
在Python中,使用适用于Chrome的硒Web驱动程序,我需要在stop_client()
之前调用close()
:在setUp()中的from selenium import webdriver
:qbr12043q
/>
在tearDown()中:
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)
评论
我们可以为此打电话给driver.quit()吗?
– Nam G VU
17年7月20日在2:47
#5 楼
WebDriver driver;
driver.quit();
上面将关闭所有打开的浏览器窗口。
WebDriver driver;
driver.close();
这将关闭当前浏览器窗口焦点。
#6 楼
使用TestNG和Java。假定此方法位于测试类继承的某些BaseTest类中,因此请尝试以下操作:
@AfterClass(alwaysRun = true)
protected void tearDown() {
driver.quit();
driver = null;
}
评论
为什么最后一个命令? driver = null;
–睫毛
2014年4月30日在6:39
我在范围初始化驱动程序逻辑中使用它,例如如果为null,则正在创建新的驱动程序实例。但是,该命令是可选的。
–user1829657
2014年5月5日,11:56
#7 楼
您可以使用driver.close();
或driver.quit();
。使用
close()
可以关闭一个浏览器,而quit()
则可以使用webdriver关闭所有浏览器。但是为什么close()
在运行时没有关闭,却在调试时关闭,我不知道。评论
您的答案很虚弱(因为您没有提供太多其他信息),也没有为问题和现有答案增加太多。您还提出了一个不同的问题,该问题实际上应作为一个单独的问题发布(包含更多信息)
–凯特·保罗(Kate Paulk)
2014年6月4日上午10:58
#8 楼
这对我有用: taskkill /f /fi "pid gt 0" /im iexplore.exe
我在Visual Studio解决方案的预生成事件中拥有此功能。这可以从命令行运行,只需在您的项目中调用它,就应该设置好了。或
driver.Quit()
taskkill /f /fi "pid gt 0" /im IEDriverServer.exe
评论
您能指出提问者如何在他们的代码中和使用chrome来运行它吗?我认为他们想将其合并到套件中,而不是一次性执行
– ECiurleo
16-09-29在15:12
#9 楼
如果您使用无头模式,仍然看到它们没有关闭,请尝试以下解决方案1)将驱动程序作为单例驱动程序
@Singleton
class BrowserInstance {
ChromeDriver getDriver(){
ChromeOptions options = new ChromeOptions()
options.addArguments("--headless --disable-gpu")
return new ChromeDriver(options)
}
}
2)使用Close并最终退出块
finally {
chromeDriver.close()
chromeDriver.quit()
}
结果:您一次只能使用一个实例,如果看到任务管理器,您将不会发现chromedriver和chrome进程挂起。
#10 楼
也许我的解决方案不是一个超级聪明的解决方案,但是在每个自动化测试用例之前,我都会先放置:time.sleep(2)
driver = webdriver.Chrome()
driver.implicitly_wait(10)
最大化窗口
driver.maximize_window()
并关闭测试用例的所有窗口我使用:
def close():
driver.close()
close()
这在Python中对我有效。
评论
有退出方法吗?是的,有-browser.quit();尽管当我在切换到WebDriver之前曾经运行这些类型的测试时,我曾经在TearDown中使用过它-self.selenium.stop()通常是为我做的。
好的。我将尝试.quit()。我发现.stop()将停止服务器,但不会关闭窗口。
.quit()无效
我在C#中验证了webdriver.Quit()关闭了firefox窗口,但我没有在Chrome驱动程序中尝试过。