PhantomJS错误:PhantomJS是一个带有JavaScript API的无头WebKit,已停止工作

PhantomJS错误:PhantomJS是一个带有JavaScript API的无头WebKit,已停止工作,javascript,debugging,selenium,phantomjs,Javascript,Debugging,Selenium,Phantomjs,我目前正在运行1.9.8.0版PhantomJS。我的问题是,它工作正常,并且做了它应该做的事情(在我的例子中,这是通过站点计算某些元素开始),但我得到了以下错误: PhantomJS is a headless WebKit with JavaScript API has stopped working. 完全错误是: Problem signature: Problem Event Name: APPCRASH Application Name: PhantomJS.exe

我目前正在运行1.9.8.0版PhantomJS。我的问题是,它工作正常,并且做了它应该做的事情(在我的例子中,这是通过站点计算某些元素开始),但我得到了以下错误:

PhantomJS is a headless WebKit with JavaScript API has stopped working.
完全错误是:

Problem signature:
  Problem Event Name:   APPCRASH
  Application Name: PhantomJS.exe
  Application Version:  1.9.8.0
  Application Timestamp:    5449270a
  Fault Module Name:    PhantomJS.exe
  Fault Module Version: 1.9.8.0
  Fault Module Timestamp:   5449270a
  Exception Code:   c0000005
  Exception Offset: 00057976
  OS Version:   6.1.7601.2.1.0.256.48
  Locale ID:    2057
  Additional Information 1: 8236
  Additional Information 2: 823646afcac85a21ce127aeb0b347bb5
  Additional Information 3: 137e
  Additional Information 4: 137ec742f6481348348abf863da72fd4

Read our privacy statement online:
  http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0409

If the online privacy statement is not available, please read our privacy statement offline:
  C:\Windows\system32\en-US\erofflps.txt
这似乎只发生在一个零售商网站(currys)上,因为我在其他零售商上运行了它,而且效果很好。而且它总是在咖喱上中断,因为他们已经更新了他们的网站。如果有人能帮忙,我将不胜感激

以下是一段代码片段:

var options = new PhantomJSOptions();
            options.AddAdditionalCapability("phantomjs.page.settings.userAgent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36");
            options.AddAdditionalCapability("phantomjs.page.settings.loadImages", "false");
            options.AddAdditionalCapability("phantomjs.page.settings.resourceTimeout", "12000");
            PhantomJSDriverService service = PhantomJSDriverService.CreateDefaultService(PhantomJSPath);
            service.HideCommandPromptWindow = false;//make it true on deployment
            using (PhantomJSDriver driver = new PhantomJSDriver(service, options))
            {

                driver.Manage().Window.Size = new System.Drawing.Size(1920, 989);
                ITakesScreenshot screenShot = driver as ITakesScreenshot;
                IJavaScriptExecutor jse = driver as IJavaScriptExecutor;

                try
                {
                    CAInformationProviderConfiguration.CAInformationSources.ForEach(source =>
                    {
                        DefaultCAInformationSourceResult result = new DefaultCAInformationSourceResult();
                        result.CAInformationSource = source;
                        try
                        {

                            driver.ExecutePhantomJS(
@"
    var page = this;
    page.onResourceRequested = function(requestData, networkRequest) {
        //console.log(requestData.url);
        if (requestData.url.match(/(.*ajax\.html.*)|(.*facebook.*)|(.*twitter.*)|(.*instagram.*)|(.*youtube.*)|(.*hotukdeals.*)|(.*pinterest.*)|(.*flix360.*)/)) {
            networkRequest.abort();
        }

    };
        page.onResourceReceived = function(response) {
          //console.log('loaded ' +  response.url+'\n'+ response.stage) ;
        };

");
                            //scrape
                            driver.Navigate().GoToUrl(source.Url);
然后它将循环检查页面上的元素。 编辑

我升级到v2.0 PhantomJS,也遇到了同样的问题

我应该提到我正在使用PhantomJS和Selenium

重启PhantomJS的最佳方式是什么?我在想,如果我能在它处理了一定数量的行之后重启它,它可能会防止应用程序崩溃

决议:

似乎内存使用量正在增加,当超过1gb时,它崩溃了。为了防止这种情况发生,我最终循环了一个批处理,然后重新启动了phantomjs。不太理想,但现在解决了我的问题


谢谢

你能展示一下phantomjs运行的脚本吗?在mac osSeems上的1.9.2上,一个简单的render()对我来说确实是一个PhantomJS的bug。尝试更新到PhantomJS2。另外,如果您寻求调试帮助,你应该提供你有问题的代码。这与版本问题有关吗?我在发行说明上看不到这个问题,而且看起来很奇怪,它通常可以正常工作,但对于一个零售商来说,它在运行一段时间后停止工作。我只是在本地尝试版本2.0,看看是否会出现相同的错误。。。