使用CasperJS时,是否可以在执行任何内联或外部Javascript之前与加载页面的DOM进行交互?

时间:2013-11-15 22:31:39

标签: javascript casperjs

我的情况是我正在使用CasperJS打开一个页面。

有问题的页面有一些Javascript(内联和外部的组合),可以从文档中删除多个HTML元素。

但是,我希望能够在删除之前使用CasperJS中的getElementsByXPath()来检索这些元素。这可能吗?

当我转出getPageContent()的值时,元素不在那里。但是,如果我在调用页面之前设置casper.page.settings.javascriptEnabled = false;,则getPageContent()现在会在执行任何Javascript之前显示原始HTML,并且缺少HTML标记。但是现在的问题是,禁用Javascript会阻止evaluate()的任何使用,所以我仍然无法检索元素。我可以在原始内容上使用某种正则表达式来实现它,但我希望可以采用更简洁的方法来实现它。

欢迎任何建议!

1 个答案:

答案 0 :(得分:0)

我从来没有听说有人这样做过。我不会说使用正则表达式是一个坏主意。我通常使用casperjs xpath和python正则表达式的组合,它工作得非常好,我个人认为它不比在加载页面之前拦截JavaScript更麻烦。

话虽如此,casperjs允许您注入JavaScript,如果它在您请求的页面上可用,则可以使用jquery。以下代码在加载任何内容之前触发。实际上,您必须不遗余力地添加代码以防止在页面加载之前触发此操作。

<script type='text/javascript'>
    alert("Stop that parsing!");
</script>