【发布时间】:2014-12-27 12:55:57
【问题描述】:
我有一个带有 javascript 的简单页面,可以验证输入中写入的电子邮件:
email.html:
<!DOCTYPE html>
<html>
<head>
<title>Email validation</title>
<script src="email.js"></script>
</head>
<body>
<span style="padding: 5px;">
<input type="text" id="email-input" placeholder="Email..."></input>
</span>
</body>
</html>
email.js:
var checkEmail = function() {
var regexp = /BIG_REGEX/;
var email = document.getElementById('email-input').value;
if (email === '')
removeFrame();
else if (regexp.test(email))
drawFrame('green');
else
drawFrame('red');
};
var removeFrame = function() {
var input = document.getElementById('email-input');
input.parentNode.style.backgroundColor = input.parentNode.parentNode.style.backgroundColor;
};
var drawFrame = function(color) {
var input = document.getElementById('email-input');
input.parentNode.style.backgroundColor = color;
};
window.onload = function() {
document.getElementById('email-input').onkeyup = checkEmail;
};
我想使用 CasperJS 测试验证功能。这是我的测试用例:
test/validator.test.js:
var fillEmail = function(browser, email) {
browser.sendKeys('#email-input', email, {reset: true});
};
var getValidation = function(browser) {
var color = browser.evaluate(function () {
return document.getElementById('email-input').parentNode.style.backgroundColor;
});
return color;
};
var validate = function(browser, email) {
fillEmail(browser, email);
return getValidation(browser);
};
casper.test.begin('Validation testing', function suite(test) {
casper.start('http://localhost:8000/email.html', function() {
test.assertEquals(validate(this, 'uskovm@gmail.com'), 'green', 'uskovm@gmail.com');
test.assertEquals(validate(this, 'vnbgfjbndkjnv'), 'red', 'vnbgfjbndkjnv');
}).run(function() {
test.done();
});
});
但是当我使用casperjs test test/validator.test.js 运行测试时,在测试信息之后总是出现错误:
Unsafe JavaScript attempt to access frame with URL about:blank from frame with URL file:///C:/Users/home/AppData/Roaming/npm/node_modules/casperjs/bin/bootstrap.js. Domains, protocols and ports must match.
怎么了?
PhantomJS 版本:1.9.8
【问题讨论】:
-
您是否已将范围缩小到导致此问题的哪一行?如果没有,请添加一些 console.log 并尝试将其缩小到一行。
-
@ArtjomB。测试通过后(
PASS 2 tests executed in 2.693s, 2 passed...之后)会打印此行 -
这是因为 PhantomJS 1.9.8 中引入了一些更改,并且有一个 CasperJS issue 关于它。所以this 可能是相关的,但是由于脚本完成时出现此错误,我不知道可以做什么。
-
好的,这发生在脚本退出时。我没有看到 CasperJS 可以做任何事情来删除这些警告。我为 PhantomJS 问题创建了一个GitHub issue。
标签: javascript phantomjs integration-testing casperjs