做app试玩怎样做公众号app怎样开自己

利用Js的console对象,在控制台打印调式信息测试Js的实现
投稿:jingxian
字体:[ ] 类型:转载 时间:
下面小编就为大家带来一篇利用Js的console对象,在控制台打印调式信息测试Js的实现。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
一次偶然的机会,打开百度的时候按下了F12,然后就见控制台里面输出了百度的招聘广告,感觉挺帅气的,再然后就有了这篇博文。
既然可以这样在控制台输出信息,那以后再调试Js的时候不就可以省去很多麻烦了嘛!避免不误人子弟,特意使用for(var i in console)查看了下各种浏览器控制台对console的支持,
结果如下:
IE 11 控制台
log , info , warn , error , debug , assert , time , timeEnd , group , groupCollapsed , groupEnd , trace , clear , dir , dirxml , count , countReset , cd , select , profile , profileEnd
Firebug 控制台
log , debug , info , warn , exception , assert , dir , dirxml , trace , group , groupCollapsed , groupEnd , profile , profileEnd , count , clear , time , timeEnd , timeStamp , table , error
Chrome 控制台
memory , _commandLineAPI , debug , error , info , log , warn , dir , dirxml , table , trace , assert , count , markTimeline , profile , profileEnd , time , timeEnd , timeStamp , timeline , timelineEnd , group , groupCollapsed , groupEnd , clear
可以看出,以上我测试的浏览器对 log , info , warn , error , debug 五个基本方法都是支持的,注意,我使用的是 IE 11,其他版本我没测试,而 Firefox 本身也是不带控制台的,需要加载Firebug 插件并且启动它,才能console,否则就是Js报错了。为了使用起来更方便,可以自己封装一下,判断一下浏览器对 console 的支持,不支持就只能使用原始的 alert 或者其他方法了。
简单用法:
console.log("日志信息");
("一般信息");
console.debug("调试信息");
console.warn("警告提示");
console.error("错误提示");
格式化输出:
console.log("%d年%d月%d日", );//日期格式输出
console.log('%c有颜色的输出信息', 'color: background-color:#0055CC');//格式输出
输出变量:
var who= 'you';
console.log('输出变量 We support& ', you);//读取变量
输出数组:
var arr = [1, 2, 3, 4, 5];
console.log('数组:', arr);//输出数组
以上这篇利用Js的console对象,在控制台打印调式信息测试Js的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具当前位置: >
Oracle-SOA-OSB代理服务封装(7.19)
栏目分类:
发布日期:
浏览次数:次
导读:本文为去找网小编(www.7zhao.net)为您推荐的Oracle-SOA-OSB代理服务封装(7.19),希望对您有所帮助,谢谢! 在进入到osb console控制台后,首先通过右键菜单创建一个新项目,在OSBProject可以看到
本文为去找网小编(www.7zhao.net)为您推荐的Oracle-SOA-OSB代理服务封装(7.19),希望对您有所帮助,谢谢! 欢迎访问www.7zhao.net
在进入到osb console控制台后,首先通过右键菜单创建一个新项目,在OSBProject可以看到一个完整的已经设计封装完成的代理服务项目的目录和资源结构,具体如下: www.7zhao.net
copyright www.7zhao.net
我们首先通过右键菜单创建一个TestProj_Heminglu的新项目出来,然后在这个新项目下创建BusinessServices,ProxyServices,Resources三个子文件夹来分别存放代理服务,业务服务和资源文件信息。在将详细创建过程前,我们先介绍下,在osb console控制台点击右键菜单后创建-&资源后可以创建的服务和资源类型信息。 copyright www.7zhao.net
第一个tab是服务,在服务tab里面可以看到,可以创建代理服务,业务服务和管道。 www.7zhao.net
copyright www.7zhao.net
代理服务: 代理服务是在 Service Bus 上本地托管的通用中介 Web 服务的 Service Bus 定义。代理服务通过接口 (不一定等同于服务提供程序或服务使用者业务服务的接口) 与外部服务进行通信。
本文来自去找www.7zhao.net
业务服务: 业务服务是在业务处理期间交换消息的企业服务的 Service Bus 定义。业务服务的配置包括其接口 (服务类型), 其用于与服务生成器连接的传输类型和配置, 安全要求, 消息处理, 性能优化和 SLA 预警规则。
内容来自www.7zhao.net
第二个Tab是接口,更多的是接口契约,里面包括了WSDL,WADL,方案,WS策略等。其中WSDL是常说的基于SOAP WS的服务接口契约,而WADL则是基于REST服务接口的服务契约。 www.7zhao.net
copyright www.7zhao.net
Web 服务策略 框架 (WS-Policy) 是一个基于 XML 的可扩展框架, 它使用域特定的安全断言扩展 Web 服务的配置, 并指定 Web 服务的安全要求, 期望和功能。在 Service Bus 中, WS-Policy 的主要用途之一是在代理服务和业务服务中配置消息级安全性。
欢迎访问www.7zhao.net
JCA 绑定资源 允许您创建通过 Oracle SOA Suite JCA 适配器与外部服务交互的业务服务和代理服务。JCA 绑定由服务 WSDL 文档和在 Oracle JDeveloper 中创建的相应 JCA 文件组成。在 Oracle Service Bus 控制台中, 需要将 JCA 文件上载到 JCA 绑定资源中才能基于该 JCA 适配器创建业务服务或代理服务。即JCA绑定主要用于数据库适配方面使用。
本文来自去找www.7zhao.net
第三个Tab是转换方面的,里面包括了Xquery和XSLT和MFL,其中Xquery和XSLT主要用于WS服务接口,XML间的数据映射和转换。MFL主要用于二进制消息流的数据映射和转换。 本文来自去找www.7zhao.net
内容来自www.7zhao.net
XQuery 资源 允许您定义用于在 XML, 非 XML 和 Java 数据类型之间转换数据的映射, 以便快速集成异构应用程序。XQuery 资源还可以包含 XQuery 代码段, 以便使用 XPath 查询 XML 文档并获取数据。
www.7zhao.net
可扩展样式表语言转换 (XSLT) 映射描述 XML 到 XML 的映射。使用“创建 XSLT 文档”对话框可以为 Service Bus 项目创建新的 XSLT 转换。
本文来自去找www.7zhao.net
MFL资源: Oracle JDeveloper 中提供的 Oracle Format Builder 允许您定义非 XML 数据记录的消息结构。定义二进制记录的层次, 字段的布局以及字段和组的分组时, 该信息将另存为消息格式语言 (MFL) 文档, 之后可以使用该文档执行运行时转换。使用 Format Builder 创建 MFL 文档后, 便可以通过创建 MFL 资源并将文件上载到该资源将文件导入到 Oracle Service Bus 中。
copyright www.7zhao.net
剩余的安全和其它两个Tab不再做进一步介绍,可以创建的基础资源介绍完成后,还是回到刚才代理服务的介绍,我们采用互联网已有的查询天气一个wsdl服务地址进行封装,将其发布为一个代理服务。 内容来自www.7zhao.net
1. 导入WSDL资源文件
copyright www.7zhao.net
地址:http://www.webservicex.net/globalweather.asmx?WSDL 欢迎访问www.7zhao.net
访问到该WSDL地址和文件后,通过网页另存为,将其存储为一个本地文件globalweather.wsdl文件。 copyright www.7zhao.net
创建一个Resource的资源文件夹,然后右键文件夹,点击创建资源-&接口-&wsdl创建资源,资源名为globalweather.wsdl,然后点击文件上载按钮上传上步存储到本地的wsdl文件。 copyright www.7zhao.net
2. 创建代理服务
欢迎访问www.7zhao.net
在WSDL资源导入完成后,可以开始创建代理服务,代理服务是OSB发布出去的服务。首先创建一个ProxyServices文件夹,然后选中文件夹右键点击创建资源-&服务-&代理服务创建代理服务。代理服务的创建本身有三种类型,即: 内容来自www.7zhao.net
类型化/无类型 REST
向导中的类型化 REST (带 WADL)
在这里我们使用SOAP WS代理服务,对于Rest服务接口后续再做进一步详细介绍。代理服务资源名我们定义为GetWeatherInfoSrv_Proxy,对于服务定义为基于WSDl的服务,通过选择按钮,搜索,然后选中到刚才定义和导入的WSDL资源文件。选后对于端口/绑定,我们选择SOAP 1.1的版本保留兼容性。 去找(www.7zhao.net欢迎您
对于管道部分checkbox默认选中,这样在代理服务创建完成后会自动创建管道。具体配置完成后的参考界面如下,可以看到配置的详细信息。 copyright www.7zhao.net
去找(www.7zhao.net欢迎您
代理服务的创建向导最后一步涉及到端点地址,这个端点URI是可以任意配置的,用于和外部接口交互服务消费者使用的服务接口端点地址。你可以修改这端点地址,比如模式端点地址为: 欢迎访问www.7zhao.net
/TestProj_Heminglu/ProxyServices/GetWeatherInfoSrv_Proxy 欢迎访问www.7zhao.net
你也可以将前面的项目路径部分去掉,仅仅保留/ProxyServices/GetWeatherInfoSrv_Proxy 内容来自www.7zhao.net
3. 创建业务服务
内容来自www.7zhao.net
注意我们访问 http://www.webservicex.net/globalweather.asmx?WSDL 这个地址的时候,在这个文件里面可以看到该WS服务的提供的具体端点地址信息,即 内容来自www.7zhao.net
soap:address location=& http://www.webservicex.net/globalweather.asmx &
copyright www.7zhao.net
我们实际调用的外部服务的端点地址信息在创建业务服的时候要使用到。 copyright www.7zhao.net
首先还是创建一个BusinessServices的文件夹,然后右键点击创建-&资源-&服务-&业务服务来创建一个业务服务。业务服务资源名定义为GetWeatherInfoSrv_Business, www.7zhao.net
www.7zhao.net
传输部分注意端点地址的配置,该端点地址即为外部实际的端点地址。负载均衡算法暂时默认不用修改。 欢迎访问www.7zhao.net
www.7zhao.net
4. 管道和消息流绘制
copyright www.7zhao.net
在代理服务,业务服务和资源文件全部创建和配置好,剩下的工作就是打开管道进行消息流的实际绘制,简单来说就是将代理服务和业务服务衔接到一起来。中间涉及到路由,分支或异常处理等。 本文来自去找www.7zhao.net
选择ProxyServices目录下面的GetWeatherInfoSrv_Proxy-pipeline文件后,管道基础信息会显示在右边界面上,然后点击右上角的打开消息流小图标,即可以打开消息流绘制界面。 欢迎访问www.7zhao.net
在打开消息流绘制界面后,选择到管道节点,可以看到出现的菜单中可以添加管道对,添加路由,添加条件分支等各种选择。通过添加这些内容进行消息流绘制。在这个案例中我们首先要添加路由,即将Proxy代理服务路由到实际提供业务能力的外部业务服务上。 copyright www.7zhao.net
copyright www.7zhao.net
实际我们要做的事情具体如下:
本文来自去找www.7zhao.net
1. 选择到管道节点后,在菜单中选择添加路由,增加一个路由节点RouteNode1。 内容来自www.7zhao.net
2. 选择到RouteNode1节点,在出现的菜单中点击编辑路由。 欢迎访问www.7zhao.net
3. 点击编辑路由后,按如下进行菜单和按钮点击添加操作-》通信-》路由,进入到路由编辑界面。 www.7zhao.net
4. 在出现的编辑里面种有一个路由到服务,选择服务超链接,进入到服务选择界面 本文来自去找www.7zhao.net
5. 在服务选择界面中选择我们刚才创建好的业务服务信息。 欢迎访问www.7zhao.net
内容来自www.7zhao.net
在编辑路由界面注意,我们还可以在输入和输出增加额外的操作,比如增加日志记录节点等,如下: 去找(www.7zhao.net欢迎您
copyright www.7zhao.net
5. 服务测试和验证
本文来自去找www.7zhao.net
我们保存所有更改,选择代理服务,点击测试按钮。点击进去后我们会看到一个服务request信息,我们可以更改传参里面的参数值,以便获取正确的返回,然后点击下面的执行按钮,开始测试。 copyright www.7zhao.net
注意点击绿色三角形测试按钮前,需要先激活会话。 www.7zhao.net
copyright www.7zhao.net
本文原文地址:
以上为Oracle-SOA-OSB代理服务封装(7.19)文章的全部内容,若您也有好的文章,欢迎与我们分享!
www.7zhao.net
声明:本站发布的资源均来自互联网,仅供交流学习之用,请勿作商业用途,所有资源版权归原作者所有。如果有侵犯到您的权益,请联系本站删除,谢谢合作!
Copyright &去找网版权所有
皖ICP备号-2phantomjs+casperjs实现浏览器自动化测试实践-js教程-网页制作-壹聚教程网phantomjs+casperjs实现浏览器自动化测试实践
PhantomJS 是一个基于 WebKit 的服务器端 JavaScript API。它全面支持web而不需浏览器支持,其快速,原生支持各种Web标准,CasperJS是一个开源的导航脚本处理和测试工具,基于PhantomJS编写。
浏览器测试有别于js代码的单元测试,后者一般是发布前的代码功能逻辑测试,在这方面已经有很多比较成熟的方案,自动化测试的优点:&&& 减少重复的工作。让机器自动帮我们完成需要的交互操作,验证我们的页面功能。&&& 自动监控。通过自动回归我们的页面功能,可以在功能出错的时候提供报警,为我们手动排除问题提供参考。&& &phantomjs可以理解为一个无界面的浏览器,可以通过流水线式的代码来驱动其页面的浏览行为,而后者是前者在易用性API上的一些封装。这里演示下使用casperjs截取百度首页&&& 关于这两个东西的安装,有兴趣体验的建议去看官方文档,其实很简单,这里不一一赘述。首先创建一个js文件baidu.js:var casper = require('casper').create();casper.start();casper.thenOpen('/', function () {&&& casper.captureSelector('baidu.png', 'html');});casper.run();以上代码主要做了三件事:&&& 创建一个casperjs实例require('casper').create(),可以理解为一个浏览器进程&&& 打开一个页面casper.thenOpen(...);&&& 截取页面图像casper.captureSelector在命令行运行casperjs baidu.js看看此脚本生成的图片结果等等!为什么这个图只有400X300的大小?原因是我创建了一个浏览器进程去加载页面,但是没有指明用什么浏览器去加载。所以在创建casper实例的时候,可以指定浏览器的窗口大小,甚至我们可以通过指定userAgent的方式冒充手机端的浏览器。例如我们将其指定为iPhone5的safari,并设置窗口大小:var casper = require('casper').create({&&& pageSettings: {&&&&&&& // 冒充浏览器&&&&&&& userAgent: 'Mozilla/5.0 (iP CPU iPhone OS 7_0 like Mac OS X; en-us) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/;&&& },&&& // 浏览器窗口大小&&& viewportSize: {&&&&&&& width: 320,&&&&&&& height: 568&&& }});再次运行后我们的是这样,是不是手机浏览时的样子了?简单应用以上的例子,可以知道了怎么使用一个无界面的浏览器去加载页面,并获得页面的界面截图。我们可以不打开浏览器,一行命令就可以知道页面长啥样了,所以每次我们只要运行这个casperjs脚本,通过截图就能看到我们页面是不是正常的。但是,通过肉眼去判断,肯定是有违“自动化”的初衷的,所以必须要借助工具来帮我们分析。最简单直观的办法就是“像素对比”,也就是把两次或多次的截图,逐一对比每一像素或一定范围区域,这样就能产出图片的差别了,如下图:实际应用中,可以指定一个图片作为基准图,每一次我们截取的页面图与之对比,如果不一样,就可以说明线上的页面出现了异常。像素对比这样的工具已经比较成熟,这里介绍一个与前端开发非常亲近的方案:Resemble.js。为什么说它和前端亲近,因为它使用的是canvas。我们知道,每一个图片的每一像素,都可以通过RBGA(red,blue,green,alpha)三个值来确定:Resemble.js的主要原理就是把我们需要对比的图片绘制到canvas中,读取需要对比的像素点(或区域)的image data,从而确定图片的差异。为了与phantomjs/casperjs更好的结合,Resemble.js作者同时做了基于Resemble.js的封装phantomcss。phantomcss使用了简单的API来做图片对比:phantomcss.screenshot( &#CSS .or1&, screenshotName1);phantomcss.screenshot( &#CSS .selector2&, screenshotName2);pareFiles(screenshotName1, screenshotName2);假如对比的图片有不一致的地方,会生成一张对比图,同时有差异的地方会用显眼的颜色标出,类似这样: 注意&&& 页面截图对比出现不一致,并不能证明我们的页面就出现了异常,例如广告位等,这些变化频繁的区域,每一次对比都有可能出现差异,所以对广告位或其他经常变化的位置不宜所差异对比。 实际应用中,对整个页面进行截图对比是不推荐的,这样的方式过于简单粗暴,我们更应该对页面的各个区域进行细分对比,做细粒度的监控。cookie既然是浏览器测试,不能没有cookie的参与,casperjs没有对cookie的操作作封装,可以使用phantomjs直接“种”cookie:phantom.addCookie({&&& name: 'cookie',&&& value: 'value',&&& domain: '.xx.com',&&& path: '/',&&& secure: false,&&& httponly: false,&&& expires: Date.now() + (1000 * 60 * 60 * 24 * 5)});在前面的开胃菜中,我们访问到的页面都是没有登录态的,这里通过手动植入百度帐号登录态的cookie值来实现登录访问。在PC端chrome中打开百度首页,并用你的帐号登录,在开发者工具中复制百度帐号关键cookie BDUSS的值并hard code到你的casperjs脚本中:phantom.addCookie({&&& name: 'BDUSS',&&& value: '你复制的cookie值',&&& domain: '.',&&& path: '/',&&& secure: false,&&& httponly: false,&&& expires: Date.now() + (1000 * 60 * 60 * 24 * 5)});完整代码看这里 运行之后我们再看一下结果Done!右上角已经有用户名,说明此时我们已经登录了!交互简单的截图+对比还远远达不到我们的测试要求,对于自动化原则来说,为我们实现自动化的页面交互才是王道,别急,这就来。前面介绍了手动种植cookie的方式实现登录,下面看下怎么实现手机端百度的登录过程。先预览下整个脚本login.js的代码,下面解释一下整个过程:创建实例。与开胃菜中的配置基本一致,这里为了更快,实例化的配置选择了不2. 加载页面3. 截取无登录态的页面:casper.captureSelector('1.png', 'html');这一步会得到图片1.png,并且右上角是没有用户名的(未登录): unlogined4. 读取当前的所有cookie并输出var cookies = phantom.for (var i = 0, len = cookies. i & i++) {&&& console.log(cookies[i].name + ': ' + cookies[i].value);}这一步输出到命令行的结果:可以看到,当前的cookie中还没有百度账号的关键cookie BDUSS。5. 点击登录按钮casper.mouse.click('#login');casperjs(phantomjs)支持了非常丰富的可以支持复杂交互的鼠标事件:&&& click&&& doubleclick&&& rightclick&&& down&&& up&&& move鼠标事件支持指定操作目标的CSS3路径6. 点击登录后,会跳转到一个填写用户名和密码的登录页,这里为了方便,强行等待3秒确保登录页加载完casper.wait(3000);7. 截取登录页界面casper.captureSelector('2.png', 'html');8. 填写表单casper.evaluate(function () {&&& document.querySelector('[name=username]').value = '***';&&& document.querySelector('[name=password]').value = '***';});这里使用了一个非常有用的方法evaluate。9. 截取填写登录表单后的样子10. 点击登录按钮11. 等待跳转回首页12. 截取登录后的首页界面13. 逐一读取cookie并显示到命令行中最后,运行测试脚本casperjs login.js能得到4张截图,分别记录了整个登录交互过程中关键步骤的交互效果:未登录登录页填写信息登录成功对比图1和图4,区别在于图4右上角的用户名:同时,在命令行中最后还读取到了登录后的BDUSS cookie值: 再来点猛料&&& 里的操作phantomjs(casperjs)不仅可以在当前页面操作,还可以把当前context切换到iframe里进行操作,这点给嵌入iframe的页面测试带来了很多方便。&&& 操作区域phantomjs(casperjs)支持使用CSS3选择器及XPath的方式对我们需要操作的目标进行操作(点击、截图等),还可以通过指定区域边界的来操作,例如可以指定x/y坐标/width/height来进行点击或截图等:casper.capture('capture.png', {&&& x: 200,&&& y: 300,&&& width: 200,&&& height: 300});交互的一些局限现实世界的web里,有些交互功能不是机械的操作,有时候出于安全或其他因素考虑,页面会做一些限制,要求我们的交互需要根据一些动态输出,这种功能是很难做到完全自动化的,例如,上面的百度登录功能,有时候会出现验证码的情况:这时候就很难借助机器来帮我们做登录了,所以在前面我要介绍通过手动植入cookie的方式实现登录。单元测试通过前面的介绍,使用phantomjs(casperjs)已经能实现很多自动化的功能,在此基础上,实现单元测试就很简单了。casperjs提供了相对比较完善的单元测试API单元测试中,每一个testsuite都被包装在一个闭包中:casper.test.begin('your testsuite', 0, function (test) {&&& // 单元测试代码});例如下面是一个测试百度页面title及log位置是否正确的一组测试用例:casper.test.begin('test demo', 0, function (test) {&&& casper.start();&&& casper.thenOpen('/', function () {&&&&&&& // 测试页面title是否正确&&&&&&& casper.test.assertTitle('百度一下', 'page title');&&&&&&& // 测试logo的位置信息&&&&&&& // 获取x/y/width/height&&&&&&& var layout = casper.getElementBounds('#logo');&&&&&&& layout = JSON.stringify(layout);&&&&&&& // 验证是否符合&&&&&&& casper.test.assertEquals(layout, '{&height&:87,&left&:0,&top&:53,&width&:320}', 'logo\'s boundary');&&& });&&& casper.run(function () {&&&&&&& casper.test.done();&&& });});完整代码test.js在这里运行casperjs test test.js可以在命令行中看到以下输出:两个case都已pass!与前面的截图肉眼查看的方式相比,单元测试为我们提供了更加简洁的测试结果。另外,casperjs的test模块还可以在测试后产出XML结果,例如上面那个例子的结果如下:&?xml version=&1.0& encoding=&UTF-8& ?&&testsuites time=&2.228&&&&& &testsuite name=&test demo& tests=&2& failures=&0& errors=&0& time=&2.228&&&& timestamp=&T13:30:12.462Z& package=&test&&&&&&&&& &testcase name=&page title& classname=&test& time=&2.223&&&&&&&&& &/testcase&&&&&&&& &testcase name=&logo's boundary& classname=&test& time=&0.005&&&&&&&&& &/testcase&&&&&&&& &system-out&&&&&&&& &/system-out&&&& &/testsuite&&/testsuites&利用这个XML结果,与报警等系统结合,可以实现各种强大的自动化功能。问题&&& 浏览器兼容。 说到底,phantomjs(casperjs)提供的还是一个无界面的webkit内核浏览器,所以无法覆盖IE浏览器。目前Gecko内核的无界面浏览器已经有解决方案SlimerJS,并且支持与phantomjs一模一样的API。&&& 设备兼容。 在各种手机等终端设备良莠不齐的情况下,服务端的无界面浏览器在这点上更难以做到模拟所有的软硬件环境。Phantomjs+Casperjs,让后台网页抓取和交互变得异常的简单Casperjs是基于Phantomjs的,而Phantom JS是一个服务器端的 JavaScript API 的 WebKit。这跟我一直想找个自带浏览器内核的后台东西的想法“暗合”。所以,在我发现这东西的时候就已经开始不由自主的兴奋起来了,研究一番之后,果不其然,后台连接网站和页面交互一下子变得异常简单起来。尤其是对需要登录才可进行的网页操作。于是乎,我就用它来写了两个小例子用来做一些登录网站后点击网上的一些链接和按钮的操作,在编写过程中,给人一种“想点哪里点哪里,咱们再也不用担心Cookie的问题~”的感觉~看完这个例子,同志们是不是不自觉的想起了某些比如“签到”,”每日登录领取“之类的词呢?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/ Firefox/17.0'&&& }});//phantom.outputEncoding=&gbk&;casper.options.viewportSize = {width: 1680, height: 924};casper.start('/app/login?source=nbulo&returnurl=/home/');casper.waitForSelector(&form#myform input[name='txtUsername']&,&&& function success() {&&&&&&& this.test.assertExists(&form input[name='txtUsername']&);&&&&&&& this.fill(&form&,{&&&&&&&&&&& 'txtUsername':'shixiaobao17',&&&&&&&&&&& 'txtPassword':'×××××your password*****'&&&&&&& },false);&&&&&&& this.click(&input#btnLogin&);&&& },&&& function fail() {&&&&&&& this.test.assertExists(&form input[name='txtUsername']&);});&casper.waitFor(function check() {&&& return this.getCurrentUrl().indexOf(&/home&)&-1;}, function then() {&&& console.log(&登录成功!!!!!!!!!!!!&);}).then(function(){&&& console.log(&执行登录后的其它操作!!!!!!!!!!!!&);&&& if(this.exists(&#btn_card_do&)){&&&&&&& this.click(&#btn_card_do&);&&&&&&& this.waitForSelector(&#my_hb_btn&,function success(){&&&&&&&&&&& console.log(&打卡成功!&);&&&&&&& },function fail(){&&&&&&&&&&& console.log(&打卡失败!&);&&&&&&& });&&& }else{&&&&&&& console.log(&今天已经打过卡啦!&);&&& }&& &});casper.run(function() {this.test.renderResults(true);});
上一页: &&&&&下一页:相关内容
暂无与此文章相关内容最新内容

我要回帖

更多关于 app试玩平台 的文章

 

随机推荐