12
でSeleniumのWebDriverJsを使ってスクリーンショットを取得するための正しい構文

Selenium's webdriverjsでWebdriverテストを実行しているときのスクリーンショットを取得する正しい方法は何ですか?ノード

私はスタンドアロンのセレンサーバーを起動しました。スクリーンショットを取るためのコマンドがセレンサーバーに記録されていますが、スクリーンショットは保存されていません。

var webdriver = require('selenium-webdriver'); 
var driver = new webdriver.Builder().usingServer('http://localURL:4444/wd/hub').withCapabilities({'browserName': 'chrome'}).build(); 
driver.get([URL to webserver on my local machine]) 

driver.takeScreenshot("c:\\selenium_local_map\\out1.png"); 

答えて

22

テイクスクリーンショットがBase64でエンコードされたPNGを解決します約束を返します。

私のコードは次のようです。データを書き込むには、あなたが何かをする必要があります、次のように:

function writeScreenshot(data, name) { 
    name = name || 'ss.png'; 
    var screenshotPath = 'C:\\selenium_local_map\\'; 
    fs.writeFileSync(screenshotPath + name, data, 'base64'); 
}; 

driver.takeScreenshot().then(function(data) { 
    writeScreenshot(data, 'out1.png'); 
}); 

詳しいドキュメントは、これは素晴らしいですhere

+4

を見つけることができ、ありがとうございました!ちょうどこれをコピーして貼り付けようとしている仲間のノードn00bsを追加したかったのですが、結果として生じるエラーについて何をすべきか疑問に思っています。次の行を2行目に追加してください:var fs = require( 'fs'); – kjc26ster

+1

このコードを動作させるには、次の行を含める必要があります。 var fs = require( 'fs'); 私は「fs」が何であるかを調べるのに時間を費やしました。 パッケージをインストールする必要がある場合、このソリューションは動作します: _italic_ npm install fs _italic_ –