如果我们将它与PhantomJS一起使用,那么在CasperJS中滚动不起作用

时间:2016-03-09 08:39:27

标签: node.js phantomjs casperjs slimerjs

如果我们使用没有--engine=slimerjs的casper而casper.scrollToBottom();并且casper.page.scrollPosition = {top: scrollHeight, left: 0};无效。

我的意思是如果我们只使用$ casperjs file.js它就行不通。但是$ casperjs --engine=slimerjs file.js它的效果还不错。

有什么建议吗? 也许我应该在命令行中使用一些东西?像--webdriver?我试过--ssl-protocol=any - 它也没有帮助。或许我应该包含像page.includeJs('https://www.my-site.com/thisjsfile.min.js')

这样的JS文件

P.S。:我不相信它会有所帮助,但这里是代码:



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.

1 个答案:

答案 0 :(得分: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,只是将文件夹更改为新版本而没有任何问题。