使用 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?
我遇到的情况是我正在使用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>
相关文章:
- 如何使用url加载程序在webpack中导入多个图像
- 如何在生成下载文件时显示加载动画
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- 无法在通过jQuery的ajax加载的页面中执行javascript
- Emberjs应用程序加载在除Index之外的所有路由上
- 在chrome.tabs.onCreated之后加载HTML页面
- 单击F5时如何停止页面加载
- HTML5音频加载和播放获胜'我不能在iPad上工作
- 使用 CasperJS 时,是否可以在执行任何内联或外部 Javascript 之前与加载页面的 DOM 进行交互
- HTML,JS:加载音频是否需要在移动浏览器上进行用户交互
- 无法与使用 jQuery 的 jQuery 加载按钮交互
- 开放层 3:加载矢量特征上的交互
- 交互加载另一个页面到DIV
- 如何在jquery中显示加载器时阻止用户与底层用户界面的交互
- 我如何确保这个ajax调用只在用户与它交互时发生,而不是在页面加载时发生
- 如何检测或注册自定义元素加载并准备与之交互的回调
- 如何在加载插件时与TinyMCE插件进行交互
- 使用require只在用户交互时加载jquery插件
- 如何在加载dom后与添加的id交互
- 可以't在加载选项卡后与jQuery选项卡内容交互