12

使用Selenium's webdriverjs運行webdriver測試時獲取屏幕截圖的正確方法是什麼?在節點上使用Selenium的WebDriverJs獲取屏幕截圖的正確語法

我有獨立的硒服務器啓動,我可以看到在selenium-server上記錄截圖的命令,但屏幕截圖沒有被保存。

我的代碼如下:

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 2014-05-02 00:18:38

+1

要使此代碼生效,您需要包含以下行: var fs = require('fs'); 我花了一些時間試圖找出那些「fs」是關於什麼的。 你必須安裝包,那麼這個解決方案將工作: _italic_ npm install fs _italic_ – 2016-01-13 18:49:07