我需要在一个页面上捕获一个URL,然后打开目标。什么是最优雅的解决方案?下面的代码不起作用,因为变量 url 基本上是本地的。
function() {
page.open("https://www.google.com/blah");
},
function() {
page.evaluate(function() {
var url=document.getElementById('link42')[0]; //URL captured
});
},
//opening the target
function() {
page.open(url);
},
function() {
page.evaluate(function() {
console.log(document.querySelectorAll('html')[0].outerHTML);
});
}
答案 0 :(得分:1)
您可以将其设为全球。您只需要记住如何从页面上下文中获取URL。无法返回DOM元素,但您可以返回JSON可序列化的所有内容。
注意: evaluate函数的参数和返回值必须是一个简单的原始对象。经验法则:如果它可以通过JSON序列化,那就没关系了。
var url;
// function chainer
function() {
page.open("https://www.google.com/blah");
},
function() {
url = page.evaluate(function() {
return document.getElementById('link42').href; // href captured
});
},
//opening the target
function() {
page.open(url);
}
getElementById
只返回一个元素,因此您无法使用[0]
。