我正在尝试使用CasperJS来抓取一个拥有动态内容但到目前为止失败的网站。该网站使用几个js库(例如Prototype)来使用自动完成来创建内容。因此,我试图插入一些值并触发事件以引发内容创建。插入和触发事件工作正常,但没有创建内容。
我是CasperJS的新手,发现它与库的相对路径有问题。我怀疑我的问题来自于在我的页面环境中没有正确加载的库。因此,我尝试使用injectJs
像这样注入它们
// ...创建casper并做一些其他的事情
casper.then(function(){
this.echo(this.page.injectJs('http://www.my-website.com/path/to/js1')); this.echo(this.page.injectJs('http://www.my-website.com/path/to/js2')); });
不幸的是,这两个函数都返回false。脚本的路径是正确的,在哪里可能是这个问题的根源?
非常感谢您的帮助。
答案 0 :(得分:4)
我不相信CasperJS可以处理注入脚本的HTTP请求。这很奇怪,因为他们实际上显示了这个in their FAQ on including jQuery。但是,同样的常见问题解答如下:
您实际上不能使用HTTP协议注入脚本 使用脚本资源的相对/绝对文件系统路径。
为了仔细检查,我自己尝试使用Mac OS X和上面的代码。当使用http和false
文件时,echo的结果为true
。
答案 1 :(得分:1)
这就是我在Casperjs脚本中注入Jquery的方法
casper.options.clientScripts = ["jquery-3.2.1.min.js"]
Jquery文件应位于casperjs脚本存在的同一目录