javascript - alternative - phantomjs que es
Error de CasperJS y ''JavaScript inseguro para acceder al marco con URL'' (4)
Este problema está solucionado en phantomjs versión 1.9
" phantomjs": "^1.9.9"
para casperJs
casperjs --ssl-protocol=tlsv1 test run.js
Tengo una página simple con javascript que valida el correo electrónico escrito en la entrada:
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;
};
Quiero probar la funcionalidad de validación utilizando CasperJS. Aquí está mi caso de prueba:
prueba / 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, ''[email protected]''), ''green'', ''[email protected]'');
test.assertEquals(validate(this, ''vnbgfjbndkjnv''), ''red'', ''vnbgfjbndkjnv'');
}).run(function() {
test.done();
});
});
Pero cuando ejecuto pruebas utilizando casperjs test test/validator.test.js
, siempre hay un error después de la información sobre las pruebas:
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.
Que pasa
Versión PhantomJS: 1.9.8
Hola, hay varias soluciones para tratar de solucionar esto al salir de fantasma de una manera diferente, como
casperjs --ssl-protocol=tlsv1 test run.js
¿QUÉ DOSIS NO AYUDA Y
setTimeout(function(){
phantom.exit();
}, 0);
en lugar de
this.exit();
Nada ha funcionado !!!
Probé varias versiones diferentes de PhantomJS. Mi salida aparece como JSON y después de muchas horas de intentos fallidos de JSON.parse (stdout) tuve que rendirme. Pensé que ''F'' es solo que voy a manejar el error ''F''.
tan simple antes de salir i
this.echo('',{"error":"'');
y despues envio
this.echo(''"}]'');
Cuando recupero mis resultados, simplemente reemplazo todos los saltos de línea e ignoro el error
stdout = stdout.replace(/(?:/r/n|/r|/n)/g, '''');
Nota al margen: este problema se intentó solucionar con phantom 1.9.9, pero en su lugar se centró en construir phantom 2.0 que no es compatible con CasperJS
PhantomJS reciente (1.9.8) introdujo este mensaje de error. No causa ningún problema real, aparte de las líneas de registro confusas al salir de PhantomJS.
Se solucionó en la versión 1.9 no publicada: https://github.com/ariya/phantomjs/pull/12720
Recibí este mismo error, así que intenté actualizar a phantomjs 1.9.9
(desde 1.9.8
). Sin embargo, recibí un error de instalación al intentar instalar 1.9.9
, por lo que phantomjs 1.9.7
a phantomjs 1.9.7
, y eso me corrigió este error. Entonces, parece que este es un problema introducido en phantomjs 1.9.8
.