casperjs检查标题是否存在且具有任何值,因此测试不为空

时间:2014-04-29 18:52:00

标签: javascript testing casperjs

这似乎是一个简单的问题,但我是casperjs的新手。

我想检查该标题是否存在,并且它有一个值,例如不是""。对于它们存在的元标记也是如此,并且还填充了某些东西。我不想要一个特定的值只是测试它们存在而不是空的,例如不是""。

我认为这在casperjs 1.1测试套件中很简单

网站:

<head>
    <title>UnoSpark</title>
    <link rel="stylesheet" href="stylesheets/foundation.css">

    <meta name="description" content="Free Dating WebSiteWeb">
    <meta name="keywords"    content="dating, love">
    <meta name="author"      content="Paul">
</head>
<body>
<div class="sharedWidget" data-widget="sharedWidget" data-widget-id="CMSHEADER"> 

试验:

casper.test.begin('title test',2, function(test)
{
    var url = "http://www.unospark.com/";
    casper.start(url).then(function()
    {
    this.test.assert(this.getTitle()!='');
    this.test.assertDoesntExist('meta:empty');

    }).run(function()
    {
    test.done();
    });
});

2 个答案:

答案 0 :(得分:0)

您可以使用casper test script.js命令运行XUnit类型测试。请记住,test命令使用内部casper实例,因此您无需创建一个。

// script.js
var x = require('casper').selectXPath;
var url = "http://www.unospark.com/";
casper.test.begin('title test', function(test) {
    casper.start(url).then(function() {
        test.assert(this.getTitle()!=''); // straight forward
    }).run(function() {
        test.done();
    });
});

casper.test.begin('meta test', function(test) {
    casper.start(url).then(function() {
        // The following selector tries to select 'meta' elements which are empty
        // This is achieved through the :empty CSS pseudo-class
        test.assertDoesntExist('meta[content=""]');
        // or using XPath
        test.assertDoesntExist(x('//meta[not(@content)]'));

        test.assertExists("*[data-widget-id='CMSHEADER']")
        // or as XPath but more general
        test.assertExists("//*[@*='CMSHEADER']")
    }).run(function() {
        test.done();
    });
});

出于性能原因,将一些测试组合成一种方法可能是个好主意。

// script.js
var url = "http://www.unospark.com/";
casper.test.begin('header tests', function(test) {
    casper.start(url).then(function() {
        test.assert(this.getTitle()!='');
        test.assertDoesntExist('meta[content=""]');
    }).run(function() {
        test.done();
    });
});

答案 1 :(得分:0)

    casper.test.begin('title test',4, function(test)
{
    var url = "http://www.unospark.com/";
    casper.start(url).then(function()
    {
        test.assert(this.getTitle()!='');
        test.assertExists('meta[name="description"]');
        test.assertExists('meta[name="keywords"]');
        test.assertExists('meta[name="author"]');

        descrip = this.evaluate(function()
        {
            return document.querySelector('meta[name="description"]').content;
        });

        keywords = this.evaluate(function()
        {
            return document.querySelector('meta[name="keywords"]').content;
        });

        author = this.evaluate(function()
        {
            return document.querySelector('meta[name="author"]').content;
        });

        console.log("Meta " + descrip);
        console.log("Meta " + keywords);
        console.log("Meta " + author);

        test.assertNotEquals(descrip, "", "Meta description not empty");
        test.assertNotEquals(keywords,"", "Meta keywords not empty");
        test.assertNotEquals(author,  "", "Meta author not empty");


    }).run(function()
    {
        test.done();
    });
});