PhantomJS错误:PhantomJS是一个带有JavaScript API的无头WebKit,已停止工作
我目前正在运行1.9.8.0版PhantomJS。我的问题是,它工作正常,并且做了它应该做的事情(在我的例子中,这是通过站点计算某些元素开始),但我得到了以下错误: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
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,看看是否会出现相同的错误。。。