2013-10-19 74 views
0

作爲一個簡單的方法來測試JavaScript是否正確執行從CasperJS,我試圖在JavaScript中彈出一個警告框在頁面上。我的最終目標是運行更復雜的JavaScript函數,但現在我只想從一些簡單的事情開始(例如,如果有本機CasperJS警報框功能,我不想使用它,因爲我想讓JavaScript工作) 。如何從casperjs執行javascript?

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

casper.start("http://www.google.com", function() { 

}); 

casper.thenEvaluate(function() { 
    alert('hi'); 
}); 


casper.then(function(){ 
    this.wait(500, function() { 
     this.echo("I've waited for 500 milliseconds"); 
    }); 
    this.capture('google.png', { 
     top: 0, 
     left: 0, 
     width: 1500, 
     height: 1000 
    }); 
}); 

casper.run(function() { 
    this.echo(this.getTitle()); // Google 
    this.exit(); 
}); 

當我運行該腳本,我做訪問http://www.google.com(從截圖證據),但沒有提示框顯示出來。

有誰知道如何從CasperJS運行JavaScript?

謝謝!

回答

1

至於爲什麼alert('hi')不會被看到,這link給出了一個很好的解釋。基本上,casperjs/phantomjs是一個無頭瀏覽器,因此不能有窗口或對話框。

但是注入腳本到遠程頁面並執行它們,您可以:這裏的how in Casperjs docs

這是你的腳本稍作修改(注意,這裏的jquery.js應該是在本地文件系統中,從中發出的命令來啓動控制檯CasperJS同一個文件夾):

var casper = require("casper").create({ 
    clientScripts: ["jquery.js"] 
}); 

casper.start("http://www.google.com/ncr"); 

casper.then(function(){ 

    this.evaluate(function() { 
     $("input[name='q']").val("CasperJS execute javascript on remote page"); 
    }); 

}); 

casper.then(function(){ 
    this.capture('google.png', { 
     top: 0, 
     left: 0, 
     width: 1500, 
     height: 1000 
    }); 
}); 

casper.run(function() { 
    this.echo(this.getTitle()); // Google 
    this.exit(); 
});