Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Selenium:如何在不调用driver.quit()的情况下停止影响PC内存的geckodriver进程?_Java_Python_Selenium_Firefox_Geckodriver - Fatal编程技术网

Java Selenium:如何在不调用driver.quit()的情况下停止影响PC内存的geckodriver进程?

Java Selenium:如何在不调用driver.quit()的情况下停止影响PC内存的geckodriver进程?,java,python,selenium,firefox,geckodriver,Java,Python,Selenium,Firefox,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) }

有一个测试,类似于:

 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();
   //}
}
因此,我初始化了geckodriver,并使用firefox实例成功地运行了测试。 但我不想在每次运行之后关闭firefox窗口,因为我只想在测试运行之后分析我拥有的,并修复任何需要的东西(稍后我将取消对driver.quit()的注释)。 同时,每次未关闭驱动程序的呼叫都会对我的电脑上的RAM造成过度影响(这无关紧要-我是否在测试后手动关闭浏览器):

所以,问题是:
是否有任何方法可以关闭“geckodriver”的进程(更准确地说,是do smth,它将关闭taskmgr中的geckodriver.exe进程),但在测试完成后不会关闭浏览器?e、 例如,在测试本身中添加一些方法,不管怎样。。。这不会影响我的工作/测试本身,我只想添加一些优化。

根据您的问题注释出
驱动程序。退出()
只是
每次运行后不要关闭firefox窗口,因为我只想分析我拥有的
不会成为最佳实践的一部分

对于任何详细分析,我们都可以创建日志条目并拍摄快照。

在按照最佳实践通过Selenium自动化时,您应该在
拆卸(){}
中调用
退出()
方法。调用
quit()
删除当前浏览会话,方法是发送带有{flags:[“eForceQuit”]}“quit”命令,最后在/shutdown
端点上发送GET请求。下面是一个例子:

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
因此,在调用
quit()
方法时,
Web浏览器
会话和
WebDriver
实例将被完全杀死。因此,您不必合并任何额外的步骤,这将是一项开销


解决方案 但是,如果要执行kill挂起的
WebDriver
实例,例如
GeckoDriver.exe
实例,则可以使用以下任一代码块来杀死任何挂起的
WebDriver
实例:

  • Java解决方案(Windows):

  • Python解决方案(Windows):

  • Python解决方案(跨平台):


尝试从任务列表中终止进程-。
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");
    }
}
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")
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()