私が考えることができる唯一の解決策はJSでそれを行うことですが、ファントムスクリプトから実行しようとしているJSに変数を渡すことができません。
1800 次
2 に答える
3
CasperJSを見てください。これは、この種の Web 動作を簡単に実行できる、非常に優れた PhantomJS スクリプトです。
PhantomJS スクリプトと通信する限り、現在のところ、いくつかの信頼できるオプションがあります。
- コマンドライン引数を介してデータを渡します。
- ファイルの読み取り/書き込みを介してデータを交換します。
- PhantomJS スクリプトが GETS/POSTS 経由で Node.js スクリプトを呼び出すようにします。
于 2012-02-27T14:36:39.317 に答える
1
はい、C++ と JS の間の QtWebKit ブリッジに問題があります。それは機能しますが、逆よりもJSからC ++へのほうが優れています。
対処すべき問題は数多くありますが、これは需要の点で最も高いものの 1 つです。
その間、私は通常、次のpage
ようにオブジェクトを「装飾」します。
var page = require("webpage").create();
page.evaluateWithParams = function(func) {
var args = [].slice.call(arguments, 1),
str = 'function() { return (' + func.toString() + ')(',
i, ilen, arg;
for (i = 0, ilen = args.length; i < ilen; ++i) {
arg = args[i];
if (/object|string/.test(typeof arg)) {
str += 'JSON.parse(' + JSON.stringify(JSON.stringify(arg)) + '),';
} else {
str += arg + ',';
}
}
str = str.replace(/,$/, '); }');
return this.evaluate(str);
}
そして、次のようにページのスコープ内で関数を呼び出すことができます:
var a = 1, b = 2;
page.evaluateWithParams(function(arg1, args) {
// your code that uses arg1 and arg2
}, a, b);
お役に立てれば。
イヴァン
于 2012-03-29T09:00:33.837 に答える