javascript - 当选择器未显示预期文本时该怎么办?

标签 javascript casperjs

我有以下 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/

相关文章:

git - 如何在 git commit 上运行 shell 脚本

javascript - 在 CasperJS 中使用数组发布数据

javascript - 将背景图像添加到 WebGL 3D 场景

javascript - 如何在 NodeJS/JavaScript 中将文本格式 JSON 数组转换为 JSON 对象数组?

javascript - CasperJS click() 不加载新的 html

javascript - CasperJS 点击无法显示模态窗口

javascript - CasperJS - 尝试通过循环填充下拉菜单时访问页面的内容

javascript - 如何组织我的网站的自定义实用 JS 功能

Javascript Array.slice() 与 Array.slice(0)

javascript - 在 Sinatra 中执行 Javascript