我想湊一個頁面中單擊,然後返回所有的數據作爲JSON。這個過程是,我首先打開www.domain.com,我將各種信息放到「節點」數組中,但是對於每個節點,還有一個頁面我想從節點中提取附加數據並將其存儲在節點中陣列。我需要在循環中完成此操作,或者至少能夠傳遞「x」變量,以便我知道將數據推送到數組的位置。CasperJS,複式單元刮
我剝奪這個代碼右後衛,並沒有檢查它的工作原理,但主要版本,人有我精的作品
任何幫助是極大的讚賞。謝謝
var nodes = {};
var casper = require('casper').create({
pageSettings: {
loadImages: false,
},
verbose: true
});
var url = "http://www.domain.com";
function get_rows()
{
var nodes = {};
var el = document.querySelectorAll(".rows");
nodes["rows"] = {};
for(var x = 0; x < el.length; ++x)
{
// Set the arrays
nodes["rows"][x] = {};
nodes["rows"][x] = el[x].innerHTML;
// THIS DATA IS ON A SEPARATE PAGE
// el[x].click IS HOW YOU'D VISIT THAT PAGE
nodes["rows"][x]["data"] = {};
}
return nodes;
}
function get_data()
{
casper.echo("get_data");
rows = casper.evaluate(get_rows);
casper.echo(JSON.stringify(rows));
}
casper.start(url, function()
{
this.echo('Starting...' + this.getTitle());
});
casper.userAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:35.0) Gecko/20100101 Firefox/35.0');
casper.viewport(320, 480);
casper.waitFor
(
function check()
{
return this.evaluate(function()
{
return $('.content').is(':visible');
});
},
function then()
{
this.capture("/work/screen.png");
// Lets go get the data
this.echo("About to get_data()");
get_data();
},
function timeout()
{
// step to execute if check has failed
this.echo("Timeout: page did not load in time...").exit();
}
);
casper.run();
我不知道這將作爲get_rows()函數的工作,因爲這是一個評估的呼叫中CasperJS超出範圍內的叫什麼? – mattis2k 2015-02-24 11:04:24
這就是爲什麼你必須將它分成多個步驟,並且大部分都必須在頁面上下文之外執行。 – 2015-02-24 11:07:48
謝謝Artjom,我將有一個發揮,看看什麼給 – mattis2k 2015-02-24 13:25:30