【问题标题】:How to print CasperJS debugging results to text file如何将 CasperJS 调试结果打印到文本文件
【发布时间】:2015-05-19 19:46:36
【问题描述】:

我无法阅读命令提示符中的调试问题。我可以将它发送到我的 PhantomJS 或 CasperJS 脚本中的文本文件吗?

这是我的python代码;

import os
import subprocess

#proxies = {'https': 'http://wmhproxy2:8080'}
APP_ROOT = os.path.dirname(os.path.realpath(__file__))

CASPER = "C:/casperjs/bin/casperjs"

#SCRIPT = os.path.join(APP_ROOT,'unicorn.js')
SCRIPT = os.path.join(APP_ROOT,'unicorn.js')

params = CASPER +' '+ SCRIPT
paper = subprocess.check_output(params,shell=True)
rock = paper.text
salesforce = open('S:/N/salesforce2.txt','w')
salesforce.write(write)
print(subprocess.check_output(params,shell=True))

CasperJS 脚本:

var casper = require('casper').create({
  verbose: true,
  logLevel: "debug"
});

var x = require('casper').selectXPath;
casper.options.waitTimeout = 7000;

casper.start('http://www.click2houston.com/',function(){
  this.echo(this.getTitle());
}).viewport(1200,1000);

casper.run();

【问题讨论】:

    标签: javascript python debugging phantomjs casperjs


    【解决方案1】:

    是的,您可以将日志附加到 CasperJS 脚本中的文件中。

    CasperJS 有一个内部事件管理,它公开了log event。一个简单的对象被传递到还包含日志消息的事件处理程序中。如果您想要不同格式的日志,则需要自己完成或在事件处理程序中实现part of the log code

    var fs = require("fs");
    
    fs.write("mylogfile.log", "", "w"); // overwrite log file
    casper.on("log", function(entry){
        fs.write("mylogfile.log", entry.message + "\n", "a");
    });
    

    CasperJS 是建立在 PhantomJS 之上的,所以你可以直接使用PhantomJS' file system module。当然你也可以将日志文件作为命令行选项传入脚本,通过casper.cli取出。

    【讨论】:

    • 请注意,这应该在 CasperJS 脚本中工作。 CasperJS 会将 mylogfile.log 文件写入启动 python 脚本的目录中。正如我所说,如果你想在另一个位置,你可以将绝对日志文件路径传递给 CasperJS 脚本。
    • 嗨 Artjom 你知道我将如何将代理添加到代码的 python 部分吗?我尝试了服务代理,但我不知道在哪里注入它?我在这里找到了关于代理的文档。这就是我到目前为止所拥有的。 service_args = [ '--proxy=wmhproxy2:8080', '--proxy-type=http' ] 在我的 APP_ROOT 上方。
    最近更新 更多