2016-03-09 79 views
0

如果我們在沒有--engine=slimerjs的情況下使用casper,則casper.scrollToBottom();casper.page.scrollPosition = {top: scrollHeight, left: 0};不起作用。如果我們與PhantomJS一起使用CasperJS滾動不起作用

我的意思是如果我們只使用$ casperjs file.js它不起作用。但與$ casperjs --engine=slimerjs file.js它工作得很好。

有什麼建議嗎? 也許我應該在命令行中使用某些東西?像--webdriver?我試過--ssl-protocol=any - 它也沒有幫助。或者,也許我應該包括JS文件,如page.includeJs('https://www.my-site.com/thisjsfile.min.js')

PS:我不相信,這將是有益的,但這裏是代碼:

casper.then(function() { 
 
    this.waitForSelector('#myselector', function() { 
 
    this.open('http://www.my-site.com/messages'); 
 
    this.echo('Open messages Inbox'); 
 
    }); 
 
}) 
 
.then(function() { 
 
    this.repeat(timesForCasperRepeat, function() { 
 
    this.wait(5000, function() { 
 
     scrollHeight = this.evaluate(function() { 
 
      return document.body.scrollHeight; 
 
     }); 
 
     this.echo('Scroll Height: ' + scrollHeight); 
 
     this.scrollToBottom(); 
 
     this.echo('scrolling down', 'INFO_BAR'); 
 
    }); 
 
    }); 
 
});

即使我改變scrollToBottom()到:

this.page.scrollPosition = { 
 
    top: scrollHeight, 
 
    left: 0 
 
    };

我還包括Anrtjom的處理錯誤的事件,有一個link

並沒有錯誤,我有:

Error: ReferenceError: Can't find variable: ourvarname1 
Error: ReferenceError: Can't find variable: jQuery 
Error: ReferenceError: Can't find variable: ourvarname2 
Error: ReferenceError: Can't find variable: ourvarname3 
Error: TypeError: 'undefined' is not a function (evaluating 'RegExp.prototype.test.bind(/^(data|aria)-[a-z_][a-z\d_.\-]*$/)') 
Console: Unsafe JavaScript attempt to access frame with URL http://www.my-site.com/messages from frame with URL http://ads.my-site.com/daisy?browser=windows_chrome&base=1&page=Mailbox&pageurl=%2fmessages&format=half_page&authid=1%2c0%2c1457605848%2c0xf290ca6243d86169%3beed7d0c7a540f963b5268452a4c95ac74793badc&cachebust=655998. Domains, protocols and ports must match. 
+0

您使用哪個PhantomJS版本?請註冊到'resource.error','page.error','remote.message'和'casper.page.onResourceTimeout'事件([Example](https://gist.github.com/artjomb/4cf43d16ce50d8674fdf#file -2_caspererrors-JS))。也許有錯誤。 –

+0

Phantomjs 2.1.1版本 – HappyCoder888

+0

由於您沒有提到有關該網站的任何信息(或者是否有任何錯誤),我們只能猜測問題所在。通過截圖檢查您是否在正確的頁面上。確保主體實際上是可滾動的,而不是某個祖先元素,比如div。如果您對iframe的內容感興趣,請確保您已更改爲iframe。 –

回答

1

找到解決方案,它爲我工作,問題是,casperjs使用舊phantomjs的版本,所以對於mac用戶只需進入安裝casperjs的文件夾。對我來說這是:/usr/local/Cellar/casperjs/。並找到與phantomjs文件夾:/usr/local/Cellar/casperjs/1.1-beta4/libexec/phantomjs,並將其更改爲從phantomjs網站新下載。

我發現casperjs使用1.9版本,但目前的phantomjs是2.1.1,只是將文件夾更改爲新的,並沒有問題。

+0

這對我有效! – ChromeHearts