casperjs(二)----实战测试

本文介绍如何使用CasperJS和PhantomJS进行Web自动化测试。针对PhantomJS在操作某些元素时存在的局限性,作者详细展示了如何利用CasperJS解决这些问题,并提供了一个具体的搜索功能测试案例。

安装完成后,我们就可以进行实战测试了,

至此我们就可以使用casperjs和phantomjs来编写脚本进行测试了。

话说回来,我当时之所以要学习casperjs是因为我发现通过phantomjs无法完成很多简单的事情,包括点击一个按钮(这里拿baidu做为例子):

// JavaScript source code
var page = require('webpage').create();
var address = 'http://www.baidu.com/';
var output = 'capture.jpeg';

page.open(address, function (status) {
    if (status !== 'success') {
        console.log('Unable to load address!');
    } else
    {
        try 
        {
            var url = page.url;
            console.log('URL: ' + url);
            page.evaluate(function () {
                document.getElementById('kw').value = "translate";
                //document.getElementById('su').click();
            });
            window.setTimeout(function () {
                page.render(output, { format: 'jpeg', quality: '100' });
                phantom.exit();
            }, 200);
        } catch (err)
        {
            console.log(err);
        }
    }
});

我要访问百度,在搜索框中输入translate,点击百度一下按钮进行search,然后对网页截个图。上文中注释掉的代码就是软肋,phantomjs做不到的地方。

于是我发起了博问虽然最终以自问自答的形式告终,显然我并没有得到什么实质性的建议,有人建议我用selenium(不得不说C#结合selenium确实是web功能测试利器),但我本次的目的是要研究基于phantomjs框架的web功能测试,而不是selenium。

后来我通过research,发现casperjs是个不错的基于phantomjs并且能够实现我所想达到的目的的这样一个工具。这是casperjs相关的API文档。

经历了很久的爬坡,终于从深坑中出来,并掌握了这门基于Javascript框架的web UI自动化测试技术,途中经历了这样一个坑:

定位不到页面submit类型input按钮的问题,这里我拿baidu做了例子。我打开baidu首页,在输入框中输入“66666666”,然后点击“百度一下”进行搜索。结果是:失败了。我可以输入“66666666”但是click button却失败了。因为这是个在看不见的浏览器中进行的自动化测试,和selenium不一样。所以我没法看到为什么失败了,是不是元素还没加载完毕,我就点了呢?事实证明和这个是有关系的。我来验证是否点击成功的方法是截图,网页截图。在点击完按钮后我会截个图,来看一下,页面是否发生了跳转。就是这个地方出错了。点击完按钮之后马上截图是不行的!必须要登上个几秒,至于是几秒,自己试吧!这里我把我做的一个成功的用百度进行搜索的自动化用例贴出来,代码如下:

// JavaScript source code
var address = 'http://www.baidu.com/';
var output1 = 'D:\capture1.png';
var output2 = 'D:\capture2.png';
var casper = require('casper').create();
casper.start(address).then(function () {
    this.evaluate(function() {
        document.getElementById("kw").value = "66666666";
    });
    this.then(function () {
        this.thenClick('#su');
        this.wait(10000).then(function () {
            this.capture(output1);
        });
        this.then(function () {
            this.evaluate(function () {
                document.getElementById("kw").value = "meinv";
            });
        })
        this.thenClick("#su");
        this.wait(10000).then(function () {
            this.capture(output2);
        });
    })
});
casper.run();

我分别在第一次搜索和第二次搜索之后截了图,如下:

第一次搜索后截图——

这里写图片描述

第二次搜索后截图——

这里写图片描述

以此证明了自动化的成功。代码中混合用到了phantomjs和casperjs框架中封装的api,合理的运用断言(可以用api中给的方法也可以自己写,和selenium一样),将可以运用phantomjs和casperjs实现基于javascript的web UI功能的自动化测试。

感谢:http://www.cnblogs.com/LanTianYou/p/4514066.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值