-1
對所謂的重複問題的答案確實解決了如何將參數傳遞給函數,但如果您實際上已經閱讀了這個問題,您會發現它最初是關於腳本懸掛的。爲什麼我的PhantomJS腳本掛起?
我是PhantomJS的新手,只是知道足夠的JavaScript來搞砸了。
這裏是我的腳本...
"use strict";
var page = require('webpage').create();
page.onConsoleMessage = function(msg) { console.log(msg); };
page.open("https://developer.amazon.com/home.html", function(status) {
if (status === "success") {
console.log("SUCCESS");
var title = page.evaluate(function() { return document.title;});
console.log(title);
var forms = page.evaluate(function() { return document.forms;});
console.log(forms.length);
var num_elements = page.evaluate(function() {return document.forms[0].elements.length;});
console.log(num_elements);
// for each (var e in document.forms[0].elements) {
// console.log("e.name = [" + e.name + " e.value = [" + e.value + "]");
// }
for (var i=0; i < document.forms[0].elements.length; i++) {
console.log("name = [" + document.forms[0].elements[i].name + "]");
}
} else {
phantom.exit(1);
}
phantom.exit(0);
});
當我運行它,我得到這個輸出,然後腳本似乎已掛起:
SUCCESS
Amazon.com Sign In
1
18
我不認爲我有任何錯別字不明白爲什麼我的循環不工作。
感謝
更新:
由於德里克的幫助下,我已經修改了我的腳本是:
"use strict";
var page = require('webpage').create();
page.onConsoleMessage = function(msg) { console.log(msg); };
page.open("https://developer.amazon.com/home.html", function(status) {
if (status === "success") {
console.log("SUCCESS");
var title = page.evaluate(function() { return document.title;});
console.log(title);
var forms = page.evaluate(function() { return document.forms;});
console.log(forms.length);
var num_elements = page.evaluate(function() {return document.forms[0].elements.length;});
console.log(num_elements);
// for each (var e in document.forms[0].elements) {
// console.log("e.name = [" + e.name + " e.value = [" + e.value + "]");
// }
for (var i=0; i < num_elements; i++) {
console.log(i);
console.log("name = [" +
page.evaluate(
function() {
return document.forms[0].elements[i].name
}
)
+ "]");
}
} else {
phantom.exit(1);
}
phantom.exit(0);
});
但我得到這個錯誤...
SUCCESS
Amazon.com Sign In
1
18
0
ReferenceError: Can't find variable: i
undefined:2
:3
name = [null]
嗯,我其實從來沒有使用過PhantomJS但似乎無處不在,你有'文件[...]'成功的工作,你必須把它包起來。在一個'page.evaluate(function(){...})'和你的* for-loop *不包含在那。 – Deryck
啊!我懂了。謝謝。如何將「我」的值傳遞給函數? –
好吧,'我'將基於範圍已經可用,所以你不必擔心那個 – Deryck