2016-11-27 38 views
0

我在文檔中看到的示例在使用.then()之前調用.end()。如如何在鏈接承諾後結束NightmareJs實例?

nightmare 
    .goto('http://yahoo.com') 
    .type('form[action*="/search"] [name=p]', 'github nightmare') 
    .click('form[action*="/search"] [type=submit]') 
    .wait('#main') 
    .evaluate(function() { 
    return document.querySelector('#main .searchCenterMiddle li a').href 
    }) 
    .end() 
    .then(function (result) { 
    console.log(result) 
    }) 
    .catch(function (error) { 
    console.error('Search failed:', error); 
    }); 

不過,我試圖做到這一點像...

... 
.then(function() {...}) 
.end() 

但我得到一個錯誤,指出.END不存在。

我也嘗試了下面,它不會拋出一個錯誤,但它會導致惡夢掛起。

... 
.then(function() {...}) 
.then(function() { 
    nightmare.end() 
}); 

回答

2

Github issue discussion

nightmare.end()必須從一個鏈接。然後()返回,而不是僅僅調用。

... 
.then(function() {...}) 
.then(function() { 
    return nightmare.end(); 
})