我正在尝试通过该evaluate()方法从网页中获取一个对象,以便我可以在evaluate. 使用名称选择的元素symbol是一个<select>带有 148 <options>(=下拉菜单)的标签。
casper.then(function () {
var elmnt = this.evaluate(function () { return document.getElementsByName("symbol")[0]; });
console.log(elmnt.options[14].index);
});
//Returns TypeError: 'null' is not an object (evaluating 'elmnt.options[14].index')
casper.then(function () {
var elmnt = this.evaluate(function () { return document.getElementsByName("symbol")[0].options[14].index; });
console.log(elmnt);
});
//Returns 14
所以它看起来像通过evaluate()方法返回一个对象不完整地返回它,因为它可以正常工作:
casper.then(function () {
var elmnt = this.evaluate(function () { return document.getElementsByName("symbol")[0]; });
console.log(elmnt.options.length);
});
//Returns 148
所以只要我不读取数组,我就可以访问选项属性。奇怪没有?