1

我想使用噩梦获取我的网络应用程序的屏幕截图。当运行代码时没有错误并且出口干净时,不会留下任何 phantomjs 实例。

var Nightmare = require('nightmare');
var Screenshot = require('nightmare-screenshot');

var nightmare = new Nightmare();
var url = process.argv[2];
var url = process.argv[3];

nightmare
  .goto(url)
  .wait('#selector')
  .use(Screenshot.screenshotSelector(path, '#selector'))
  .run(function (err, nightmare) {
    if (err)
      console.log('Error');
    else
      console.log('Done.');

    nightmare.teardownInstance();
    nightmare.end();
  });

但是,当出现 web 未运行等错误时,选择器不存在。phantomjs 的实例保持未退出。

$ ps -ax | grep phantom
6065 ttys004    0:00.00 grep phantom
6050 ttys005    0:02.87 phantomjs --load-images=true --ignore-ssl-errors=true --ssl-protocol=any --web-security=true /.../node_modules/phantom/shim.js 13201 127.0.0.1

即使出现任何错误,我如何才能正确退出其实例?

4

1 回答 1

1

目前,.wait(elem)每 250 毫秒会不断循环检查元素是否存在。您可以将此报告给开发人员以添加传递附加参数以在特定超时后停止检查以正常退出。

或者,您可以通过手动检查元素是否存在某个超时然后退出进程来解决此问题。

您可以wait(fn)用于执行检查。

于 2015-11-19T07:04:11.313 回答