gpt4 book ai didi

memory-leaks - phantomjs 没有关闭并留下孤立进程

转载 作者:行者123 更新时间:2023-12-03 06:04:01 25 4
gpt4 key购买 nike

在 PhantomJS 1.9.2、ubuntu 12 LTS 和 Ghostdirver 1.04 以及 selenium 2.35 上,测试后我得到了悬空的 phantomjs 进程。有人知道如何解决这个问题吗?

这是一个演示奇怪行为的测试程序:

package testing;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.phantomjs.PhantomJSDriver;
import org.openqa.selenium.phantomjs.PhantomJSDriverService;
import org.openqa.selenium.remote.DesiredCapabilities;

public class PhantomIsNotKilledDemo {

private static WebDriver getDriver(){
String browserPathStr = System.getProperty("selenium.pathToBrowser");
if (browserPathStr == null) browserPathStr = "/home/user1/apps/phantomjs/bin/phantomjs";

DesiredCapabilities caps = DesiredCapabilities.phantomjs();

caps.setCapability("takesScreenshot", true);
caps.setCapability(
PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY,
browserPathStr );

WebDriver driver = new PhantomJSDriver(caps);

return driver;
}

public static void main(String[] args) {
int max = 10;
for (int i = 0; i < max; i++){
WebDriver d1 = getDriver();
d1.get("http://www.imdb.com/title/tt1951264");

System.out.println("done with cycle " + (i+1) +" of "+max);
d1.close();
//d1.quit();
}

System.out.println("done");
System.exit(0);
}
}

要运行此程序,您应该提供 phantomjs 二进制文件的路径作为系统属性或相应地设置变量。

运行此命令后,我执行此 shell 命令

ps -ef | grep phantomjs

并找到 10 个悬空的 phantomjs 进程。

如果我使用d1.quit(),我最终不会得到悬空进程。这显然更好,但我仍然希望使用 .close 得到相同的结果。

注意,这是一个交叉帖子 https://github.com/detro/ghostdriver/issues/162#issuecomment-25536311

更新 这篇文章根据理查德的建议进行了更改(见下文)。

最佳答案

您应该使用 quit() 来终止进程,而不是 close()

正如您所发现的,close 将关闭当前窗口(和浏览器),但不会关闭进程。如果您要向进程发送其他命令或想要检查进程,这非常有用。

退出适用于当您想要关闭每个窗口并停止进程时,这听起来就像您正在寻找的那样。

documentation这两种方法如下:

close()

Close the current window, quitting the browser if it's thelast window currently open.

quit()

Quits this driver, closing every associated window.

关于memory-leaks - phantomjs 没有关闭并留下孤立进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19139325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com