我有以下 html 文件。
<tr>
<th class = 'class1'> </th>
<td class = 'price' id = 'cell-1234'>$100</td>
</tr>
我正在尝试使用 CasperJS 获取“价格”类的文本。我无法使用 id,因为它随着每次迭代而不断变化。
使用下面的代码我得到一个空行。我不确定哪个函数可以为我提供文本。
casper.then(function(){
console.log(this.fetchText('.price'));
});
我该怎么做才能找到错误?
最佳答案
HTML 看起来不错并且选择器应该匹配。您应该做很多事情:
- 检查您是否位于正确的页面,例如通过打印
casper.getTitle()
。 - 检查页面中是否确实存在您要选择的元素。这对于单页应用程序或简单的 AJAX 增强型 Web 应用程序尤其重要。这可以通过打印整个页面内容
casper.getHTML()
或仅打印页面casper.getHTML("div.something")
的一小部分来完成,其中包含有问题的元素。要解决此问题,您可以使用casper.wait*
。 - 检查您要选择的元素是否确实位于页面中。有时,网站会根据用户代理字符串提供不同的页面,并根据视口(viewport)大小更改布局(PhantomJS 的默认值为 ~400x320)。在编写基于桌面浏览器的选择器时,您应该记住这一点。
关于javascript - 当选择器未显示预期文本时该怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26263901/