PhantomJSは、JavaScript API を使用したヘッドレス WebKitです。DOM 処理、CSS セレクター、JSON、Canvas、SVG など、さまざまな Web 標準を高速かつネイティブにサポートしています。これは完全な Web スタックであり、ヘッドレス Web サイト テスト、スクリーン キャプチャ、ページ自動化、およびネットワーク監視に最適なソリューションです。
JavaScript ライブラリをテストしたいが、テスト マシンにインストール済みのブラウザーを使用したくない場合は、このフレームワークを使用することをお勧めします。
1. QUnit の autostart が false に設定されていることを確認してください。
QUnit.config.autostart = false;
2. Windows 用のPhantomJS 実行可能ファイルをダウンロードし、プロジェクトに追加して、[出力ディレクトリにコピー] を [新しい場合はコピー] に設定します。
3. JavaScript ファイルとテスト済みページ URL の 2 つの引数を使用して PhantomJS.exe を実行するプロセスを作成します。
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.プロセスを開始し、このプロセスの終了コードを確認します。
process.Start();
process.WaitForExit();
Assert.AreEqual(process.ExitCode, 0);
JavaScript ファイルでは、eveluateAsyncを使用してページのコンテキストにアクセスして QUnit テストを実行し、終了するまで待機して、失敗したテストの量をログに記録します。
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);
});
ログを処理するために、次のコードを使用して終了コードでプロセスを終了します。
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。また、SkyDrive に完全なソース コード (VS2012) を提供しています。以下のリンクからダウンロードできます。
PhantomJS テスト プロジェクト
このプロジェクトでは、MSTest で PhantomJS を実行する方法をデモします。
PhantomJS フォーム プロジェクト
このプロジェクトは、C# Windows フォームで記述された PhantomJS ラッパーです。テストプロジェクトで使用する前に、これを使用して「main.js」および「core.js」ファイルをテストします。