gpt4 book ai didi

javascript - 卡斯珀 JS : TypeError: 'null' is not an object

转载 作者:行者123 更新时间:2023-11-30 10:04:32 31 4
gpt4 key购买 nike

我正在尝试获取此页面上的“David Welsh”文本:http://foster.uw.edu/faculty-research/directory/david-welsh/

当我在浏览器控制台,我成功地选择了我想要的文本,但是当我在终端中运行我的 js 文件时,我收到错误:

TypeError: 'null' 不是一个对象(评估 'document.getElementById('Boundless').children')

为什么这在我的浏览器中有效,但在我的本地 js 文件中却无效?

casper.then(function(){
this.each(links,function(self,link){
self.thenOpen(link,function(a){
this.echo(this.getCurrentUrl());
var name = document.getElementById('Boundless').children[0].children[2].children[0].children[1].children[0].innerHTML;
casper.echo(name);
}
});
});
});

最佳答案

CasperJS 建立在具有两个上下文的 PhantomJS 之上。页面上下文 ( casper.evaluate() ) 是沙盒。这是访问 DOM 的唯一方法,您需要使用它。

var name = casper.evaluate(function(){
return document.getElementById('Boundless').children[0].children[2].children[0].children[1].children[0].innerHTML;
});
casper.echo(name);

你想在其中使用的所有内容,都必须显式传入。它无法访问外部定义的变量。

PhantomJS documentation还有重要的事情要说:

Note: The arguments and the return value to the evaluate function must be a simple primitive object. The rule of thumb: if it can be serialized via JSON, then it is fine.

Closures, functions, DOM nodes, etc. will not work!

关于javascript - 卡斯珀 JS : TypeError: 'null' is not an object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29886234/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com