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

When using CasperJS, is it possible to interact with the DOM of a loaded page before any inline or external Javascript is executed?

本文关键字:加载 交互 DOM Javascript 外部 是否 CasperJS 任何内 执行 使用      更新时间:2023-09-26

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

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

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

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

欢迎任何建议!

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

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

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