PhantomJS là không đầu WebKit bằng JavaScript API. Nó có hỗ trợ nhanh và bản địa cho các tiêu chuẩn web khác nhau: xử lý DOM, công cụ chọn CSS, JSON, Canvas và SVG. Đó là web đầy đủ ngăn xếp một giải pháp tối ưu cho thử nghiệm trang web không đầu, Chụp màn hình, Tự động hóa trang và Giám sát mạng.

tôi đề nghị bạn sử dụng khuôn khổ này khi bạn muốn kiểm tra một số thư viện JavaScript và không muốn sử dụng trình duyệt được cài đặt trên máy tính thử nghiệm.
1.Hãy chắc chắn rằng bạn đã đặt tự khởi động của QUnit thành false.
QUnit.config.autostart = false;
2. Download PhantomJS executable file cho Windows, thêm vào dự án của bạn và đặt "Sao chép sang thư mục đầu ra" bằng "Sao chép nếu mới hơn".
3.Tạo quy trình chạy PhantomJS.exe với 2 đối số là tệp JavaScript và url trang thử nghiệm.
var scriptPath = Path.GetFullPath(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "../../PhantomScript/main.js"));
var pageUrl = "file:///" + Path.GetFullPath(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "../../QUnitExample/qunit-demo.htm")).Replace('\\', '/');
var process = new Process
{
StartInfo =
{
UseShellExecute = false,
RedirectStandardOutput = true,
CreateNoWindow = true,
WindowStyle = ProcessWindowStyle.Hidden,
FileName = "phantomjs.exe",
Arguments = "\"" + scriptPath + "\" \"" + pageUrl + "\""
}
};
4.Bắt đầu quá trình và kiểm tra mã thoát của quy trình này.
process.Start();
process.WaitForExit();
Assert.AreEqual(process.ExitCode, 0);
Trong tập tin JavaScript, tôi sử dụng eveluateAsync để truy cập vào nội dung của trang để chạy thử nghiệm QUnit, chờ cho đến khi nó kết thúc và đăng nhập số lượng thử nghiệm thất bại.
page.evaluateAsync(function()
{
QUnit.done(function(response)
{
console.log('!Exit' + response.failed);
});
QUnit.start();
// If QUnit finish after 2500 ms, system will exit application with code -1.
setTimeout(function()
{
console.log('!Exit-1');
}, 2500);
});
Để xử lý nhật ký, tôi sử dụng mã sau để thoát khỏi quá trình có mã thoát.
var exitCodeName = '!Exit';
page.onConsoleMessage = function (msg)
{
if (msg.indexOf(exitCodeName) == 0)
{
var exitCode = parseInt(msg.substring(exitCodeName.length).trim(), 10);
phantom.exit(exitCode || 0);
}
};
PS. Tôi cũng cung cấp mã nguồn đầy đủ (VS2012) cho SkyDrive của tôi. Bạn có thể tải xuống tại liên kết sau.
PhantomJS Test project
Dự án này giới thiệu cho bạn cách chạy PhantomJS trong MSTest.
PhantomJS Form project
Dự án này là PhantomJS wrapper được viết trong C# Windows Form. Tôi sử dụng điều này để kiểm tra các tệp "main.js" và "core.js" trước khi sử dụng nó trong dự án thử nghiệm.

# 1 Giới hạn, không thể nắm bắt bảng điều khiển.đăng nhập đầu ra từ JavaScript thường sử dụng trong hệ thống phức tạp. –
# 2 Giới hạn, tập lệnh async thực thi tối đa là một phút. –