Selenium Webdriver(node.js)截取屏幕截图并保存测试结果

时间:2014-04-08 13:06:34

标签: javascript node.js selenium-webdriver

我开始为网站应用程序开发测试,但我遇到了一些问题。

我使用Node.js,webdriver,chromedriver和selenium rc。

问题是: 1.如何制作屏幕截图并将其保存在与脚本相同的文件夹中。 2.有没有办法保存测试用例的测试日志?例如,如果检查页面上的元素并且找不到它,我该如何输出?

3 个答案:

答案 0 :(得分:36)

为了保存测试日志,通常使用测试运行器。当您检查某个元素是否在页面上并且找不到它时,则会引发异常(通常是断言错误),并且测试运行器将记录此项并将其标记为失败的测试。 In the documentation they suggest you use Mocha

至于将屏幕截图保存到磁盘,the api看起来像这样

driver.takeScreenshot().then(
    function(image, err) {
        require('fs').writeFile('out.png', image, 'base64', function(err) {
            console.log(err);
        });
    }
);

答案 1 :(得分:5)

仅供记录,这就是您使用WebdriverJS截取屏幕截图的方式:

var webdriverjs = require('webdriverjs'),
    client = webdriverjs.remote({
        desiredCapabilities: {
            browserName: 'chrome'
        }
    });

client
    .init()
    .url('http://google.com')
    .saveScreenshot(__dirname + '/googleScreenshot.png')
    .end();

您还可以使用WebdriverCSS截取屏幕截图。它是WebdriverJS进行CSS回归测试的插件。它与PhantomCSS几乎相同。

答案 2 :(得分:2)

aychedee的答案调整为完整的承诺,该承诺将在写入文件后解析,并在写入失败时拒绝:

const util = require('util')
const fs = require('fs')
const writeFile = util.promisify(fs.writeFile)

function takeScreenshot(driver, file){
  return driver.takeScreenshot()
    .then(image => writeFile(file, image, 'base64'))
}

async函数

async function takeScreenshot(driver, file){
  let image = await driver.takeScreenshot()
  await writeFile(file, image, 'base64')
}