`

casperjs的几个例子

 
阅读更多
自动投票
var casper = require('casper').create({  
    verbose: true,
    //logLevel: 'debug',
    pageSettings: {
         loadImages:  false,    
         loadPlugins: true,   
         userAgent: 'Mozilla/5.0 (Windows NT 6.1; rv:17.0) Gecko/20100101 Firefox/17.0'
    },
    viewportSize: {  
        width: 1024,  
        height: 768  
    },
    clientScripts:  [
        '/home/pandy/PhantomJS/demo/toupiao/jquery.js'
        //'http://libs.baidu.com/jquery/1.9.0/jquery.js' //引入jquery  
        //但是类似this.test.assertExists(".rh_ui_icon li a:first","存在链接")测试失败,  
        //还不知道原因和解决办法  
    ],  
    onError: function(self,m){//错误回调函数  
        this.capture("error.png");  
        console.log("onError===========================FATAL:" + m);  
        self.exit();  
    },  
    onAlert: function (msg) {//alert的回调函数  
        console.log("onAlert===========================msg:" + msg);  
    } 
});
//phantom.outputEncoding="gbk";
//casper.options.viewportSize = {width: 1680, height: 924};
/*
//=============> A: 第1种方式
casper.start('http://www.cnave.com/xjz/index.php?m=content&c=index&a=toupiao&id=42',function(){  
    this.capture("c:/test.png",{  
        top: 00,  
        left: 0,  
        width: 1024,  
        height: 768  
    });
	var date = new Date();
    this.echo(date.getTime()+"====================>capture over");  
});
casper.run();
*/
//=============> B:第2种方式
casper.start('http://www.cnave.com/xjz/',function(){  
    this.capture("/home/pandy/PhantomJS/demo/toupiao/test2.png",{  
        top: 00,  
        left: 0,  
        width: 1366,  
        height: 768  
    });
    var date = new Date();
    this.echo(date.getTime()+"====================>capture over");  
    var nameCount = this.evaluate(function() {
        var names = $("a[onclick='toupiao(8)']");
        names.trigger("click");
        return names.length;  
    });  
    this.echo(nameCount);
});
casper.run();




对163所有新闻的截图例子这只是一个casper 1.0.x版本的语法例子。
//casperjs /mnt/D/work_documents/workspace_ide/phantomjs_casperjs/casperjs/list_163_new.js

var casper = require("casper").create({
    verbose: true,
    logLevel: "info",
    viewportSize: [1366, 678],
    pageSettings:{
        //定义一些变量
    },
    clientScripts: [
        //"http://code.jquery.com/jquery-1.9.0.js"
    ],
    onAlert: function (msg) {
    },
    onError: function () {
        console.log("错误","error");
    }
});
var utils = require("utils");
var url = "http://news.163.com";
var d1 = new Date();
var count=0; //一个计数器
var links = []; //用于记录所有匹配的链接

console.log("开始启动程序");

//启动
casper.start(url, function () {
    console.log("打开标题:"+this.getTitle());
});


casper.then(function () {
    console.log("匹配链接");
    links = this.evaluate(function () {
        return [].map.call(__utils__.findAll('.area-main .main-list a'), function (node) {
            return node.getAttribute('href');
        });
    });
});



casper.then(function(){
    console.log("打开链接并截图");
    this.each(links, function (self, link) {
        console.log(link);
        self.thenOpen(link,function(){
            var path=link.substring(7);//去掉http://
            console.log("截图["+links.length+":"+count+"] title=>"+this.getTitle());
            this.capture("/mnt/D/work_documents/workspace_ide/phantomjs_casperjs/images/"+path+".png");
            count++;
        });
    });
});


casper.then(function(){
    console.log("计算耗时");
    var d2=new Date();
    var i=d2.getTime()-d1.getTime();
    console.log("共使用了 "+(i)/1000+" s导出"+count+"张图片.");
})


casper.run(function () {
    console.log("操作完成.");
    casper.exit();
});


删除持续集成hudson里面的一些部署历史
// casperjs /mnt/D/work_documents/workspace_ide/phantomjs_casperjs/casperjs/hudson_dev_cpm_delete.js
casper = require("casper").create({
    viewportSize: {width: 1366, height: 768},
    onError: function (msg, backtrace) {
        this.echo("出现错误信息:\n" + msg + "\n" + backtrace);
    },
    onAlert: function (msg) {
        this.echo("Alert:\n" + msg);
    }
});
//要删除任务名称
jobName="dev_cpm_disabled";
//hudson的地址
url = "http://192.168.0.170:8081/hudson3/";
//删除最大历史记录数,用于循环
max_record=100;

//启动
casper.start(url, function () {
    this.capture("/mnt/D/work_documents/workspace_ide/phantomjs_casperjs/images/1_start.png");
    this.echo("启动程序....");
    this.echo(this.getTitle());
});
//为登录准备
casper.then(function () {
    this.click("#login-field a");
    //this.click(x('//td[@id="login-field"]//a[1]'));
    this.capture("/mnt/D/work_documents/workspace_ide/phantomjs_casperjs/images/2_login.png");
    this.echo("点击登录的范围");
});
//输入登录信息
casper.then(function () {
    this.fill("form[id='loginForm']", {
        "j_username": "admin",
        "j_password": "admin"
    }, false);
    this.capture("/mnt/D/work_documents/workspace_ide/phantomjs_casperjs/images/3_login.png");
    this.echo("等待点击登录按钮");

});
//点击登录按钮
casper.then(function () {
    this.click("div.ui-dialog-buttonset button");
    this.capture("/mnt/D/work_documents/workspace_ide/phantomjs_casperjs/images/4_login.png");
    this.echo("已经点击登录按钮, 跳转等待.....");
    this.wait(3000, function () {
        this.echo(this.getTitle());
        this.capture("/mnt/D/work_documents/workspace_ide/phantomjs_casperjs/images/5_login_success.png");
        this.echo("登录成功");
    });
});
//登录成功后,准备进入任务的历史列表页面
casper.then(function () {
    //this.clickLable("dev_cpm_disabled", "a");
    this.click("a[href='job/"+jobName+"/']");
    this.echo("准备进入"+jobName+", 等待.....");
    this.wait(3000, function () {
        this.echo(this.getTitle());
        this.capture("/mnt/D/work_documents/workspace_ide/phantomjs_casperjs/images/6_gogo_job_history.png");
        this.echo("进入 "+jobName+" 成功");
    });
});

//循环删除离历史
for(var i=0; i<max_record; i++){
    var d=new Date();


    //1.点击第一个历史,并进入细节页面
    casper.then(function () {
        this.echo("---------------------------------------------------------------------------------------------");
        //注意,这里选择器匹配多个的时候,只会默认点击第一个被匹配的元素
        this.click("table[id='buildHistory'] a[class='tip']")
        this.echo("点击任务历史链接, 等待进入detai页面.....");
        this.wait(3000, function () {
            this.capture("/mnt/D/work_documents/workspace_ide/phantomjs_casperjs/images/"+ d.getTime()+"A.png");
            this.echo("进入 "+jobName+" detail页面成功");
        });
    });
    //2.点击右上角的删除按钮
    casper.then(function () {
        this.click("input[id='deleteBuild']")
        this.echo("点击删除按钮, 等待弹出确认对话框.....");
        this.wait(2000, function () {
            this.capture("/mnt/D/work_documents/workspace_ide/phantomjs_casperjs/images/"+ d.getTime()+"B.png");
            this.echo("删除 "+jobName+" 任务历史的确认对话框成功,等待确认...");
        });
    });
    //3.确认删除,并自动跳转到历史列表页面
    casper.then(function () {
        //注意,这里选择器匹配多个的时候,只会默认点击第一个被匹配的元素
        this.click("div.ui-dialog-buttonset button");
        this.echo("点击确认删除历史对话框, 等待跳转到历史里表.....");
        this.wait(3000, function () {
            this.capture("/mnt/D/work_documents/workspace_ide/phantomjs_casperjs/images/"+ d.getTime()+"C.png");
            this.echo("删除成功,并成功跳转到历史列表");
        });
    });

    //等待几秒钟后,继续循环
    casper.then(function(){
        this.echo("等待2秒钟,准备循环......");
        this.wait(2000,function(){
            d=new Date();
        });
    })
}


casper.run(function () {
    this.echo("程序执行完毕...");
    this.exit();
})


分享到:
评论
2 楼 pyzheng 2013-12-08  
恩  我没碰到乱码  我这些是在Linux下测试的  应该是使用utf-8编码  至于window  可能情况不一样哦。  是否是js文件的编码有问题?
1 楼 a952213390 2013-12-08  
向博主请教下casperjs 中文乱码是如何解决的?3q

相关推荐

    casperjs网页截屏例子

    这个“casperjs网页截屏例子”可能是为了展示如何使用CaspeJS库来捕获网页的快照。下面,我们将深入探讨CaspeJS的基本概念、用途以及如何实现网页截屏功能。 CasperJS是开源的,它提供了丰富的API,使得开发者可以...

    casperjs1.1.0-beta3.jar

    CasperJS是一个基于PhantomJS和SlimerJS的高级脚本接口,用于浏览器自动化和功能测试。这个"casperjs1.1.0-beta3.jar"文件是CasperJS的一个特定版本,即1.1.0-beta3,适用于Windows操作系统。在Java平台上,JAR...

    casperjs-1.1.3.zip

    CasperJS是一个基于PhantomJS和SlimerJS的高级脚本接口,专为网页抓取和自动化测试设计。它提供了一种简洁的方式来导航、交互和测试网页,特别适合处理那些依赖JavaScript来呈现内容的网站。在本文中,我们将深入...

    casperjs.pdf

    安装CasperJS通常有几种方式,比如使用Homebrew在OS X上安装,通过npm(Node.js包管理器)安装,或者从Git仓库克隆源码。文档还提供了从归档文件安装以及在Windows系统上的安装指南。安装后,文档还列举了一些已知的...

    casperjs-1.1.4-1.zip

    CasperJS是一个基于PhantomJS和SlimerJS的高级脚本接口,用于浏览器自动化和功能测试。这个"casperjs-1.1.4-1.zip"文件包含了CasperJS的1.1.4-1版本,这是一款非常有用的工具,尤其对于前端开发者和自动化测试工程师...

    casperjs抓取淘宝手机信息

    casperjs抓取淘宝手机信息实例

    phantomjs和casperjs下载地址.zip

    CasperJs 是一个基于 PhantomJs 的工具,其比起 PhantomJs 可以更加方便的进行 navigation。 推荐使用PhantomJs1.9版本的 phantomjs和casperjs下载地址,casperjs下载地址,phantomjs下载地址

    Linux版本casperjs,抓取js加载的页面

    针对这种情况,`casperjs`应运而生,它是一个基于`PhantomJS`的高级脚本接口,专门用于模拟浏览器行为,抓取JavaScript渲染后的页面内容。本文将深入探讨`casperjs`在Linux环境中的应用,以及如何结合Java实现爬虫...

    PyPI 官网下载 | webtest-casperjs-0.1.tar.gz

    标题中的“PyPI 官网下载 | webtest-casperjs-0.1.tar.gz”表明这是一个从Python Package Index(PyPI)官方下载的软件包,名为`webtest-casperjs`,版本为0.1,格式为tar.gz压缩文件。PyPI是Python开发者发布和分享...

    CasperJS 离线帮助手册(html格式)

    CasperJS是一个开源的,用JavaScript编写的,基于PhantomJS的导航脚本和测试工具 ,它简化了定义一个完成的导航操作所需的步骤,还提供了很有用的函数封装,方法,和语法糖,它可以完成下面这些常见任务: 定义 & 排序...

    php-casperjs, CasperJS的简单PHP包装.zip

    php-casperjs, CasperJS的简单PHP包装 php PHP是一个简单的PHP包装器,用于设计用于对网页进行用户测试的精细库 CasperJS 。它很容易集成到PHPUnit测试用例中。使webcrawler从未如此容易 !安装在使用php之前,你...

    casperjs +phantomjs 爬虫抓包插件

    利用casperjs +phantomjs实现登录抓取网页 并且截图;下载后解压后,在环境变量path中配置解压后bin目录的地址,如:E:\Program Files\casperjs\bin;E:\Program Files\phantomjs\bin

    phantomjs&casperjs

    PhantomJS和CasperJS是两个非常重要的工具,它们在Web自动化测试和无头浏览器场景中扮演着关键角色。这两个工具都是基于WebKit浏览器引擎,但各自有着不同的功能和用途。 PhantomJS是一款开源的无头浏览器,它允许...

    casperjs抓取简单实例

    1. **Java** - 虽然CasperJS本身与JavaScript相关,但这里提到Java可能是因为这个实例中用Java来调用CasperJS脚本或者构建一个Java项目来封装CasperJS的功能。 2. **casperjs** - 作为主要的工具,CasperJS用于实现...

    casperjs-scraper:用CasperJS刮取

    CasperJS + PhantomJS的无头抓取 入门 您必须已全局安装npm , casperjs , phantomjs apt-get install npm npm install -g phantomjs npm install -g casperjs cd到项目根目录然后运行 npm install grunt ...

    docker-casperjs:用于casperjs容器的Docker回购

    docker run -v `pwd`/casperjs-files:/home/casperjs-files fprieur/docker-casperjs casperjs /home/casperjs-files/sample.js 截屏 docker run -v `pwd`/casperjs-files:/home/casperjs-files fprieur/docker-...

    casperjs:使用 PhantomJs 和 CasperJs 测试 Web 应用程序

    卡斯帕杰斯(CasperJS)是一个用于编写功能和验收测试的框架,它构建于 PhantomJS 之上,利用 JavaScript 语言,提供了丰富的 API 来方便地进行网页自动化操作和测试。 **一、安装 Node.js** Node.js 是一个开放源...

    casperjs2.0

    CasperJS是一个基于PhantomJS和SlimerJS的高级脚本接口,用于浏览器自动化和页面测试。它提供了强大的工具来导航、操作和检查网页内容,主要用于进行功能测试和UI验收测试。CasperJS 2.0是其最新的版本,带来了许多...

    casperjs_biztest.rar

    CasperJS是一个强大的工具,专为网页导航脚本和自动化测试设计,它是基于另一个开源项目PhantomJS构建的。PhantomJS是一个无头浏览器,意味着它可以在后台运行,没有图形用户界面,这对于自动化任务和服务器端渲染...

    casperjs-test-example:CasperJS使用示例进行一些测试

    casperjs-test-example CasperJS使用示例进行一些测试 请参阅以下文章: : 运行测试 casperjs test yourtestfile.js # OR to execute all casperjs test * .js 测试用例 测试索引要有一些要素 文件名:index.js ...

Global site tag (gtag.js) - Google Analytics