我能想到的唯一解决方案是使用JS来实现,但是我无法将任何变量从幻像脚本传递给我正在尝试执行的JS。
答案 0 :(得分:3)
你应该看看CasperJS。它是一个非常好的PhantomJS脚本,可以让您轻松执行这种Web行为。
就您今天的PhantomJS脚本进行通信而言,您有一些可靠的选择:
答案 1 :(得分:1)
是的,在C ++和JS之间的QtWebKit桥接器中存在上下传递内容的问题。 它有效,但从JS到C ++比反过来更好。
我们有许多问题需要解决,但就需求而言,这是排名第一的问题之一。
同时,我通常会像这样“装饰”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);
希望这有帮助。
伊万