PhantomJS在他开始加载之前更改JS src

PhantomJS Change JS src before he starts loading

本文关键字:JS src 开始 加载 PhantomJS      更新时间:2023-09-26

我试图更改Javascriptsrc,以便获得一个用于测试某些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();

但它不起作用。恐怕我得等点什么,但我不明白是什么。

退一步,可以把你的问题重新表述为:当PhantomJS试图加载"production_path/source.js"时,我如何让它加载"dev_path/ssource.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');
    }
};

当然,在实际情况下,我会使用regex替换(正如我所期望的,有多个URL需要替换)。

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