Dmi*_*try 9 python java firefox selenium geckodriver
有一个测试,像:
import //needed imports
public class TestClass{
WebDriver driver;
@Before
public void setUp() {
//some code
}
@Test
public void test1() {
//some code, including init of driver (geckodriver)
}
//@After
// public void tearDown() {
// driver.quit();
//}
}
Run Code Online (Sandbox Code Playgroud)
所以,我使用firefox实例,使用geckodriver并成功运行我的测试.但是我希望不要在每次运行后关闭firefox窗口,因为我只想分析我拥有的东西,并在测试运行后修复任何需要的东西(我将在稍后的unComment driver.quit()).同时,每次调用而不关闭驱动程序会导致我的PC上的RAM过度影响(并且无关紧要 - 我是否在测试后手动关闭浏览器):

所以,问题是:是否有任何方法可以关闭"geckodriver"的进程(更确切地说 - 执行smth,这将关闭taskmgr中的geckodriver.exe进程),但是在测试完成后不会关闭浏览器?例如,在测试本身添加一些方法,无论如何......这不会影响我的工作/测试本身,我只想添加一些优化.
Deb*_*anB 10
根据你的问题注释掉driver.quit()只是Not to close firefox window after each run, because I just want to analyse what I have不会是最佳实践的一部分.
对于任何详细分析,我们可以创建日志条目并拍摄快照.
虽然Selenium按照最佳实践自动化,但您应该调用该quit()方法tearDown() {}.通过使用{"flags":["eForceQuit"]}发送"quit"命令来调用当前浏览会话,最后在/ shutdown上发送GET请求.以下是一个示例:quit() DELETE EndPoint
1503397488598 webdriver::server DEBUG -> DELETE /session/8e457516-3335-4d3b-9140-53fb52aa8b74
1503397488607 geckodriver::marionette TRACE -> 37:[0,4,"quit",{"flags":["eForceQuit"]}]
1503397488821 webdriver::server DEBUG -> GET /shutdown
Run Code Online (Sandbox Code Playgroud)
因此,在调用quit()方法时,Web Browser会话和WebDriver实例完全被杀死.因此,您不必包含任何额外的步骤,这将是一个开销.
不过,如果你想执行杀悬空WebDriver情况下,例如,GeckoDriver.exe你可以使用下面的代码块的杀死任何悬空的情况WebDriver实例:
Java解决方案(特定于WindowsOS):
import java.io.IOException;
public class Kill_ChromeDriver_GeckoDriver_IEDriverserver
{
public static void main(String[] args) throws Exception
{
Runtime.getRuntime().exec("taskkill /F /IM geckodriver.exe /T");
Runtime.getRuntime().exec("taskkill /F /IM chromedriver.exe /T");
Runtime.getRuntime().exec("taskkill /F /IM IEDriverServer.exe /T");
}
}
Run Code Online (Sandbox Code Playgroud)Python解决方案(特定于WindowsOS):
import os
os.system("taskkill /f /im geckodriver.exe /T")
os.system("taskkill /f /im chromedriver.exe /T")
os.system("taskkill /f /im IEDriverServer.exe /T")
Run Code Online (Sandbox Code Playgroud)Python解决方案(跨平台):
import os
import psutil
PROCNAME = "geckodriver" # or chromedriver or IEDriverServer
for proc in psutil.process_iter():
# check whether the process name matches
if proc.name() == PROCNAME:
proc.kill()
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
5176 次 |
| 最近记录: |