当前位置: 首页 > 知识库问答 >
问题:

Selenium Java:保证chromedriver。程序退出时exe关闭

李飞翼
2023-03-14

我在Java中使用Selenium来自动化GoogleChrome。当我的程序退出时,内存中会留下一个chromedriver.exe实例。我知道我可以使用driver.quit()来关闭当前实例。但是,如果Java应用程序在任何时候被杀死(例如在调试会话期间),这种清理当然永远不会执行。

我正在寻找一种制作chromedriver的解决方案。exe是Java进程的子进程,因此当Java进程退出时,子进程也会自动终止。解决方案,如运行时。getRuntime()。exec(“taskkill/F/IM chromedriver.exe”) 全部终止<代码>chromedriver。exe实例,但这可能会打乱系统上的其他Selenium进程,这并不理想。同样,这也不会阻止强制终止进程。

共有1个答案

厉念
2023-03-14

您可以使用“Selenium Grid”-它有一个清理周期,每XXX个时间段清理所有空闲会话(默认值为5分钟)-https://www.seleniumhq.org/docs/07_selenium_grid.jsp

这样,您的selenium服务器将负责调用driver.quit()[,这是终止进程的首选方法-即使您的Java程序被终止,也会从内存中释放Seleniumchromedriver.exe。

 类似资料:
  • 问题内容: 有没有办法确保所有创建的子进程在Python程序退出时都消失了?所谓子流程,是指那些用subprocess.Popen()创建的内容。 如果不是,我是否应该遍历所有发出的终止点,然后终止-9?有什么清洁剂吗? 问题答案: 您可以为此使用 atexit ,并注册程序退出时要运行的所有清理任务。 atexit.register(func [,* args [, kargs]])** 在清理

  • 问题内容: 我不知道如何使用此代码: 使用x按钮关闭程序。 问题答案: 你需要线 因为按下X按钮时JFrame的默认行为等效于 因此,几乎所有时候,创建JFrame时都需要手动添加该行 我目前指的是like 中的常量,而不是像先前那样直接声明的常量更能反映意图。

  • 23.9 程序退出 每个SpringApplication都会向JVM注册一个关闭钩子,以确保在退出时ApplicationContext被正常关闭。所有标准的Spring的生命周期回调(如DisposableBean接口或@PreDestroy注解)都可以使用。 另外,如果希望bean在SpringApplication.exit()被调用时返回特定的退出码,那么bean可以实现org.spri

  • 问题内容: 我有两个线程:主线程和从主线程生成的线程。 当主线程退出时,整个程序会终止吗? 问题答案: 没有。 当所有非守护程序线程完成时,Java程序终止。 该文档指出: Java虚拟机启动时,通常只有一个非守护程序线程(通常调用某些指定类的名为main的方法)。Java虚拟机将继续执行线程,直到发生以下任何一种情况: 类的方法已被调用,安全管理器已允许进行退出操作。 不是守护程序线程的所有线程

  • 当我通过TestNG xml执行TestNG套件时,我观察到以下错误。 测试最初在10-12个测试中顺利运行,但后来失败,出现上述错误消息。我希望这是一些问题与配置版本,但我不能找到它。 项目具有以下POM: 下面的测试类示例:

  • 我正在使用Python和MySQLdb向数据库中添加行。似乎当我的脚本退出时,行会被删除。在脚本退出之前,我的最后一行在表上执行“select*”,这显示了我的一行。当我重新运行脚本时,第一行(在打开连接之后)执行相同的“select*”并返回零结果。我在这里真的是不知所措。我已经在这方面工作了大约2个小时,不能理解什么可以访问我的数据库。 此外,在运行脚本之间,我从终端手动运行“select*”