【问题标题】:PhantomJS Change JS src before he starts loadingPhantomJS 在开始加载之前更改 JS src
【发布时间】:2014-10-20 01:24:14
【问题描述】:

我正在尝试更改 Javascript src 以获得用于测试某些 Javascript 的“开发环境”。

显然我无法构建 真实 开发环境,我无法在开发环境中镜像此网站)。

所以我正在考虑使用 PhantomJS 操作 Dom 并使用 CasperJS 测试 javascript。我想转换(例如)这个脚本

<script type="..." language="..." src="production_path/source.js"></script>

进入这个

<script type="..." language="..." src="dev_path/source.js"></script>

在脚本开始加载之前。

我正在尝试

casper.start("http://www.example.com/",function(status){


        var scripts = document.getElementsByTagName('script');

        casper.each(scripts,function(self,my_script){

            //here i would rewrite script url

        });

});

casper.run();

但它不起作用。恐怕我必须等待一些东西,但我不明白是什么。

【问题讨论】:

标签: javascript phantomjs casperjs dom-manipulation


【解决方案1】:

退后一步,是否可以将您的问题重新表述为:当 PhantomJS 尝试加载“production_path/source.js”时,如何让它加载“dev_path/source.js”?

如果是这样,请编写一个onResourceRequested 处理程序,并使用resourceRequest 对象的changeUrl 函数。

会是这样的:

casper.page.onResourceRequested = function(requestData, networkRequest) {
  if(requestData.url == 'production_path/source.js'){
    console.log("Changing request from production to dev for source.js");
    networkRequest.changeUrl('dev_path/source.js');
    }
};

当然,在实际情况下,我会使用正则表达式替换(因为我希望有多个 URL 可以替换)。

(未经测试,如果它不起作用,请告诉我,我会更仔细地研究它。)

【讨论】:

  • 它有效,只是一个评论......这是我使用的代码:casper.on('resource.requested',function(requestData,networkRequest){....});
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-21
  • 2012-02-16
  • 2014-10-11
  • 1970-01-01
  • 2017-02-15
相关资源
最近更新 更多