这似乎是一个简单的问题,但我是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();
});
});
答案 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();
});
});