我需要获取id =" 1"的值这是动态的,紧跟在id =" divContenedor"。
之后<html debug="true">
<head>
<script src="chrome-extension://bmagokdooijbeehmkpknfglimnifench/googleChrome.js"/>
<body onload="/*xajax.$('cargando').style.top=document.body.scrollTop+300+'px'; xajax.$('cargando').style.left=document.body.scrollWidth/2-121+'px';*/" onclose="alert('lalala');" style="cursor: default;">
<div id="general" style="text-align: left;">
<table width="100%" cellspacing="0" cellpadding="0" style="margin-bottom: 8px;">
<div id="notas" class="notas"/>
<div id="divContenedor" class="central">
**<div id="1">**
<div style="padding: 4px 0px; border-top-width: 1px; border-top-style: solid; border-top-color: rgb(181, 209, 221);">
<div class="menuContenedor">
<span style="float: right;">
我的CasperJS代码:
var casper = require('casper').create();
casper.start('http:\\www.example.es');
casper.then(function() {
var id = document.getElementById('divContenedor').firstChild
this.echo(id);
});
casper.run();
答案 0 :(得分:2)
CasperJS构建于PhantomJS之上,并使用其两种上下文的模型。只有页面上下文才能访问DOM,您只能将可序列化的值传入和传出。这是通过casper.evaluate()
:
casper.then(function() {
var id = this.evaluate(function(sel) {
return document.getElementById(sel).children[0].id;
}, 'divContenedor');
this.echo(id);
});
evaluate()
的PhantomJS文档有一个重要的注意事项:
注意:
evaluate
函数的参数和返回值必须是一个简单的原始对象。经验法则:如果它可以通过JSON序列化,那就没关系了。闭包,函数,DOM节点等将不工作!
其他小事:
element.firstChild
适用于节点而不仅仅是元素。所以第一个孩子可能总是一个没有id的TextNode。http:\\www.example.es
不是有效的网址。使用正斜杠:http://www.example.es/