CasperJS实践笔记(2)

代码本来写在一个JS文件里面,执行方式如下:

casperjs test xxx.js

可是代码超过1500行后,只有我自己看得明白,必须拆分(独立文件&逻辑复用)!

拆分后怎么执行呢?如下:

casperjs test --includes=1.js,2.js,3,js,4.js  testcase_code1.js --xunit=tesecase01_result.xml

文件1.js,2.js,3.js,4.js就是拆分出去的实现代码,testcase_code1.js可以当作是测试用例的执行步骤代码。

目前我的测试步骤部分现状是链式调用:

casper.test.begin("xxx", function(){

    casper.start("http://xx.xx.com");

    casper.then(fun_a).then(fun_b).then(fun_c);

    casper.run(function(){
    //    ...
    })
})

方法fun_a、fun_b、fun_c的实现都在拆分出去的那些文件。

includes包括了一长串文件列表,容易错误;这里有优化的空间,可以从CasperJS的run.js入手增加定制逻辑(根据自己项目的需要,不过我还没有时间去搞这个)

附加几句废话:

fun_a这些方法如果放在casper.then里面调用,只能是一个实现形式不能是执行形式;

比如casper.then(fun_a)正确但是casper.then(fun_a(str1, str2))肯定错误!

怎么办呢?不能带参数肯定不方便,其实可以在fun_a实现时搞一个闭包返回function即可。

tips:有些方法的实现是闭包,有些方法不是闭包,有点乱。

时间: 2024-12-28 19:37:37

CasperJS实践笔记(2)的相关文章

CasperJS实践笔记(3)

CasperJS项目中方法的封装和调用问题,第二个遇到的workflow问题. 在其他代码中有几个方法,比如fun_A,fun_B,fun_C: 现在某个方法调用它们,有一个错误的示范: casper.then(function(){ this.echo("xxxx"); this.wait(function(){ this.echo("AAAA"); }) this.waitForSelector('', function(){ fun_a.call(this);

CasperJS实践笔记(5):Mac平台上teamcity和casperjs的结合

步骤如下: (1)启动Mac操作系统: (2)安装casperjs,phantomjs: (3)安装teamcity: (4)设置各种环境变量,设置teamcity直到可以打开网页: (5)网页上新建project: (6)使用command line方式运行casper用例脚本: (7)可以做成执行计划,设置执行时间和周期. 基本情况就是这样了---

CasperJS实践笔记(4)

casperJS的测试module casper.test.begin执行一串完整的测试动作,不过其中的对象this并非capser而是test! 只不过test对象本身具备casper的attribute,另外还有test module提供的attribute(提供了测试相关的诸多API). casper对象有很多很多options,下面说说这些options的设置,options允许我们设置一些默认值.userAgent.定制功能.等等. 举例如下: casper.options.pageS

CasperJS实践笔记(1)

CasperJS的执行workflow的一个问题(如果可以的话,请不要认为这是一个bug): 伪代码如下: var casper = require("casper").create(); casper.start("http://xx.xx.com"); casper.then(function(){ this.echo("AAAA"); this.wait(1000, function(){ this.echo("BBB"

hadoop2.5.2学习及实践笔记(四)—— namenode启动过程源码概览

对namenode启动时的相关操作及相关类有一个大体了解,后续深入研究时,再对本文进行补充 >实现类 HDFS启动脚本为$HADOOP_HOME/sbin/start-dfs.sh,查看start-dfs.sh可以看出,namenode是通过bin/hdfs命令来启动 $ vi start-dfs.sh # namenodes NAMENODES=$($HADOOP_PREFIX/bin/hdfs getconf -namenodes) echo "Starting namenodes o

PHP核心技术与最佳实践--笔记

<?php error_reporting(E_ALL); /* php 5.3引入 延迟静态绑定 */ /* php5.4引入trait,用来实现多层继承 trait Hello{} trait World{} class MyHelloWorld{ use Hello,World; } */ /* php4时代 php是不支持析构函数的*/ /* php中数组索引是字符串,但是没有使用引号,php就将其认为是一个常量,找不到在视为变量 */ /** * php中的异常必须手动 * 可以结合错

udacity android 实践笔记: lesson 4 part a

udacity android 实践笔记: lesson 4 part a 作者:干货店打杂的 /titer1 /Archimedes 出处:https://code.csdn.net/titer1 联系:1307316一九六八(短信最佳) 声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 ,转载请注明作者及出处. tips:https://code.csdn.net/titer1/pat_aha/blob/mast

udacity android 实践笔记: lesson 4 part b

udacity android 实践笔记: lesson 4 part b 作者:干货店打杂的 /titer1 /Archimedes 出处:https://code.csdn.net/titer1 联系:1307316一九六八(短信最佳) 声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 ,转载请注明作者及出处. tips:https://code.csdn.net/titer1/pat_aha/blob/mast

COMET探索系列一【COMET实践笔记】

转:http://www.cnblogs.com/hackboy/p/3687627.html COMET探索系列一[COMET实践笔记] 这几天在给公司的一个点对点聊天系统升级,之前只是使用简单的ajax轮询方式实现,每5秒钟取一次数据,延时太长,用户体验不是很好,因此打算采用服务器推送技术,故此整理了以下文档,将自己找到的一些资料及心得与大家在此分享.本文主要综述了Comet相关的概念.应用场景.常用的两种实现模型.及PHP实现代码. 概    念:Comet,基于 HTTP 长连接的“服务