如果我们使用没有--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')
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.
答案 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,只是将文件夹更改为新版本而没有任何问题。