-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
ああ!そうですか。ありがとう。関数に "i"の値を渡すにはどうすればよいですか? –
まあ、 'i'は既にスコープに基づいて利用できるようになりますので、心配する必要はありません – Deryck