2014-10-31 12 views
24

Tôi có trang đơn giản với javascript mà xác nhận email viết bằng đầu vào:CasperJS và 'nỗ lực không an toàn hoạt Javascript để truy cập vào khung với URL' lỗi

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; 
}; 

Tôi muốn kiểm tra chức năng xác thực bằng CasperJS. Đây là trường hợp thử nghiệm của tôi:

thử nghiệm/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(); 
    }); 

}); 

Nhưng khi tôi chạy thử nghiệm sử dụng casperjs test test/validator.test.js, luôn được lỗi sau khi thông tin về các xét nghiệm:

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.

Có vấn đề gì?

Phiên bản PhantomJS: 1.9.8

+0

Bạn đã thu hẹp nó xuống dòng nào gây ra điều này? Nếu không, hãy thêm một số console.log và cố gắng thu hẹp nó xuống một dòng. –

+0

@ArtjomB. Dòng này được in khi quá trình thử nghiệm được thực hiện (sau khi các kiểm tra «PASS 2 được thực thi ở 2.693s, 2 đã trôi qua ...') – michaeluskov

+0

@ArtjomB. 1.9.8 – michaeluskov

Trả lời

18

Gần đây PhantomJS (1.9.8) đã giới thiệu thông báo lỗi này. Nó không gây ra bất kỳ vấn đề thực sự nào, ngoài các đường log khó hiểu khi thoát khỏi PhantomJS.

Nó được cố định trong chưa được phát hành 1,9 chi nhánh: https://github.com/ariya/phantomjs/pull/12720

+8

Câu trả lời này (http://stackoverflow.com/a/26688062/789683) có một giải pháp cho vấn đề – flipchart

+0

Điều này làm việc tốt cho tôi trong PhantomJS 2.2.1 –

1

Vấn đề này được cố định trong phiên bản phantomjs 1,9

"phantomjs": "^1.9.9"

cho casperJs

casperjs --ssl-protocol=tlsv1 test run.js 
0

Hey có một số cách giải quyết để thử và giải quyết vấn đề này bằng cách thoát khỏi bóng ma theo một cách khác như

casperjs --ssl-protocol=tlsv1 test run.js 

MÀ liều KHÔNG GIÚP và

setTimeout(function(){ 
    phantom.exit(); 
}, 0); 

thay vì

this.exit(); 

Không có gì đã làm việc !!!

Tôi đã thử một số phiên bản PhantomJS khác nhau. Đầu ra của tôi xuất hiện dưới dạng JSON và sau nhiều giờ cố gắng không thành công của JSON.parse (stdout) tôi phải từ bỏ. Tôi đã tìm ra 'F', tôi sẽ xử lý lỗi 'F'ing'.

đơn giản như vậy trước khi tôi thoát i

this.echo(',{"error":"'); 

và Sau khi tôi gửi

this.echo('"}]'); 

Khi tôi nhận được kết quả của tôi trở lại tôi chỉ đơn giản là thay thế tất cả các ngắt dòng và bỏ qua những lỗi

stdout = stdout.replace(/(?:\r\n|\r|\n)/g, ''); 

Lưu ý phụ: sự cố này đã được khắc phục bằng phantom 1.9.9 nhưng thay vào đó tập trung vào xây dựng phantom 2.0 w hich không tương thích với CasperJS

1

Tôi đã nhận được lỗi này, vì vậy tôi đã thử cập nhật thành phantomjs 1.9.9 (từ 1.9.8). Tuy nhiên, tôi đã gặp phải lỗi cài đặt khi cố gắng cài đặt 1.9.9, vì vậy tôi đã sửa đổi thành phantomjs 1.9.7 và đã khắc phục lỗi này cho tôi. Vì vậy, có vẻ như đây là vấn đề được giới thiệu trong phantomjs 1.9.8.

+0

Cảm ơn bạn! Nếu ai đó cần các tệp exe trước đó: https://bitbucket.org/ariya/phantomjs/downloads – Aliz

Các vấn đề liên quan