2

好的,基本上我有一个帖子:

<div class=post>
  <div class=content></div>
  <div class=content-meta></div>
</div>

这就是它的原型来帮助解释

所以我想做的是使用一些 JS 基本上删除或隐藏 div 'content-meta'

使用 JQuery 我有:

$('.content-meta').remove();

但是,当我使用 CasperJS 时,我对如何实现此代码感到有些困惑。

我希望在屏幕捕获之前对其进行操作(屏幕捕获部分工作正常)

这是我一直在测试的代码(省略了 URL),它可以很好地选择类,但我不知道在哪里/如何执行 Jquery 以在屏幕捕获之前删除检测到的元素:

casper.start('http://pageurl.com/XYZ', function() {

if (this.exists('.content-meta')) {
    this.echo('found .content-meta', 'INFO');
} else {
    this.echo('.content-meta not found', 'ERROR');
}
this.captureSelector('resultingcapture.png', '.post');
});

casper.run();

TL;DR 你如何在 CasperJS 函数中执行 JS/Jquery?

4

1 回答 1

5

要从 CasperJS 执行 javascript 代码,您必须使用evaluate()方法

evaluate() 方法作为 CasperJS 环境和您打开的页面之一之间的门;每次将闭包传递给evaluate() 时,您都在进入页面并执行代码,就好像您在使用浏览器控制台一样。

你的代码应该是这样的:

var casper = require('casper').create();

casper.start('http://pageurl.com/XYZ', function() {

   if (this.exists('.content-meta')) {

       this.echo('found .content-meta', 'INFO');

       //evaluates an expression in the current page DOM context.
       this.evaluate(function(){
          //delete div 'content-meta'
          $('.content-meta').remove();
       });

       this.then(function(){
           this.captureSelector('resultingcapture.png', '.post');
       });

  } else {
      this.echo('.content-meta not found', 'ERROR');
  }
});

casper.run();

注意:此代码仅在 webcontext 包含 jQuery 时才会运行,否则您必须仅使用 javascript 删除 div。

于 2013-06-14T13:30:31.233 回答