2

さて、基本的に私は投稿を持っています:

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

それは説明を助けるためのプロトタイプです

だから私がやりたいことは、基本的にdiv 'content-meta'を削除または非表示にするためにいくつかのJSを使用することです

私が持っている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()メソッドを使用する必要があります。

CasperJS 環境と開いたページの 1 つとの間のゲートとしての evaluate() メソッド。クロージャを 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 に答える