Phantomjs CasperJS:当连续两次调用fetchText时,第二次调用不会';行不通
CasperJS版本1.1.0-beta3Phantomjs CasperJS:当连续两次调用fetchText时,第二次调用不会';行不通,phantomjs,casperjs,Phantomjs,Casperjs,CasperJS版本1.1.0-beta3 casper.start(someLink); function getUrl(link) { casper.thenOpen(basePath + link); casper.then(function() { var par1 = this.fetchText('body > table > tbody > tr > td > div > table > tbody &g
casper.start(someLink);
function getUrl(link) {
casper.thenOpen(basePath + link);
casper.then(function() {
var par1 = this.fetchText('body > table > tbody > tr > td > div > table > tbody > tr:nth-child(2) > td > table > tbody > tr > td:nth-child(2) > table > tbody > tr:nth-child(3) > td > table > tbody > tr:nth-child(4) > td:nth-child(2) > table > tbody > tr:nth-child(1) > td:nth-child(2) > strong > span')
this.echo(par1);
var par2 = this.fetchText('body > table > tbody > tr > td > div > table > tbody > tr:nth-child(2) > td > table > tbody > tr > td:nth-child(2) > table > tbody > tr:nth-child(3) > td > table > tbody > tr:nth-child(4) > td:nth-child(2) > table > tbody > tr:nth-child(1) > td:nth-child(3) > strong > span')
this.echo(par2);
});
}
getUrl(someRelativeUrl);
casper.run(function() {
this.echo('DONE!');
});
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><div align="center">
<table width="1000" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><table width="1000" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="217" valign="top" bgcolor="#E3E5E4"><table width="100%" border="0" cellspacing="0" cellpadding="0">
</table></td>
<td width="783" align="left" valign="top" bgcolor="#FFFFFF"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="right" bgcolor="#D4D6D5"><img src="top.jpg" width="180" height="179" /></td>
</tr>
<tr>
<td bgcolor="#FFFFFF"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="3%"> </td>
<td width="97%"> </td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="2%"> </td>
<td width="49%"align="left" class="style10">POLE1: <strong><span class="style7">ADR1 </span></strong></td>
<td width="49%"align="left" class="style10">POLE2: <strong><span class="style7">ADR2 </span></strong></td>
</tr>
<tr>
</table></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
</table></td>
</tr>
</table></td>
</tr>
</table></td>
</tr>
<tr>
<td bgcolor="#170E13"> </td>
</tr>
</table>
</div></td>
</tr>
</table>
</body>
</html>
问题:par1显示正确的值,par2为空。
我更改了它们的顺序,将par2放在par1之前:在本例中,par2显示为right,par1为空
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><div align="center">
<table width="1000" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><table width="1000" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="217" valign="top" bgcolor="#E3E5E4"><table width="100%" border="0" cellspacing="0" cellpadding="0">
</table></td>
<td width="783" align="left" valign="top" bgcolor="#FFFFFF"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="right" bgcolor="#D4D6D5"><img src="top.jpg" width="180" height="179" /></td>
</tr>
<tr>
<td bgcolor="#FFFFFF"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="3%"> </td>
<td width="97%"> </td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="2%"> </td>
<td width="49%"align="left" class="style10">POLE1: <strong><span class="style7">ADR1 </span></strong></td>
<td width="49%"align="left" class="style10">POLE2: <strong><span class="style7">ADR2 </span></strong></td>
</tr>
<tr>
</table></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
</table></td>
</tr>
</table></td>
</tr>
</table></td>
</tr>
<tr>
<td bgcolor="#170E13"> </td>
</tr>
</table>
</div></td>
</tr>
</table>
</body>
</html>
我做错了什么?显然,fetchText行是正确的,CSS也是正确的,但是只有第一行是正确的,下一行都是空的
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><div align="center">
<table width="1000" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><table width="1000" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="217" valign="top" bgcolor="#E3E5E4"><table width="100%" border="0" cellspacing="0" cellpadding="0">
</table></td>
<td width="783" align="left" valign="top" bgcolor="#FFFFFF"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="right" bgcolor="#D4D6D5"><img src="top.jpg" width="180" height="179" /></td>
</tr>
<tr>
<td bgcolor="#FFFFFF"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="3%"> </td>
<td width="97%"> </td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="2%"> </td>
<td width="49%"align="left" class="style10">POLE1: <strong><span class="style7">ADR1 </span></strong></td>
<td width="49%"align="left" class="style10">POLE2: <strong><span class="style7">ADR2 </span></strong></td>
</tr>
<tr>
</table></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
</table></td>
</tr>
</table></td>
</tr>
</table></td>
</tr>
<tr>
<td bgcolor="#170E13"> </td>
</tr>
</table>
</div></td>
</tr>
</table>
</body>
</html>
编辑:下面是给出问题的实际html(stackoverflow以某种方式隐藏了代码中的节和DOCTYPE)。就这么简单:
细节
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><div align="center">
<table width="1000" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><table width="1000" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="217" valign="top" bgcolor="#E3E5E4"><table width="100%" border="0" cellspacing="0" cellpadding="0">
</table></td>
<td width="783" align="left" valign="top" bgcolor="#FFFFFF"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="right" bgcolor="#D4D6D5"><img src="top.jpg" width="180" height="179" /></td>
</tr>
<tr>
<td bgcolor="#FFFFFF"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="3%"> </td>
<td width="97%"> </td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="2%"> </td>
<td width="49%"align="left" class="style10">POLE1: <strong><span class="style7">ADR1 </span></strong></td>
<td width="49%"align="left" class="style10">POLE2: <strong><span class="style7">ADR2 </span></strong></td>
</tr>
<tr>
</table></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
</table></td>
</tr>
</table></td>
</tr>
</table></td>
</tr>
<tr>
<td bgcolor="#170E13"> </td>
</tr>
</table>
</div></td>
</tr>
</table>
</body>
</html>
POLE1:ADR1
POLE2:ADR2
谢谢 如果添加
,它是否会更改调用fetchText
后的code>?不,不工作。这可能是由于长css选择器导致的繁重计算造成的延迟吗?我完全迷路了,几个小时后,我遇到了这样的问题,编程不再合乎逻辑:(不,不可能,因为fetchText
是完全同步的。可能是
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><div align="center">
<table width="1000" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><table width="1000" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="217" valign="top" bgcolor="#E3E5E4"><table width="100%" border="0" cellspacing="0" cellpadding="0">
</table></td>
<td width="783" align="left" valign="top" bgcolor="#FFFFFF"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="right" bgcolor="#D4D6D5"><img src="top.jpg" width="180" height="179" /></td>
</tr>
<tr>
<td bgcolor="#FFFFFF"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="3%"> </td>
<td width="97%"> </td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="2%"> </td>
<td width="49%"align="left" class="style10">POLE1: <strong><span class="style7">ADR1 </span></strong></td>
<td width="49%"align="left" class="style10">POLE2: <strong><span class="style7">ADR2 </span></strong></td>
</tr>
<tr>
</table></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
</table></td>
</tr>
</table></td>
</tr>
</table></td>
</tr>
<tr>
<td bgcolor="#170E13"> </td>
</tr>
</table>
</div></td>
</tr>
</table>
</body>
</html>