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

k2fxgqgv  于 2022-12-21  发布在  Java
关注(0)|答案(3)|浏览(226)

我开始为一个网站应用程序开发测试,我遇到了一些问题。
我使用的是Node.js、webdriver、chromedriver和selenium rc。
这些问题是:1.如何制作截图并将其保存在与脚本相同的文件夹中。2.是否有办法保存测试用例的测试日志?例如,如果在页面上检查某个元素,但没有找到它,如何输出?

gg0vcinb

gg0vcinb1#

为了保存测试日志,你通常使用测试运行器。当你检查一个元素是否在页面上,你不能找到它,那么你引发一个异常(通常是Assert错误),测试运行器将记录这一点,并标记为失败的测试。在文档中,他们建议你使用Mocha。
至于将屏幕截图保存到磁盘,API如下所示

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

flvtvl502#

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

const fsp = require('fs').promises

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

或在ESM async函数中

import { writeFile } from 'node:fs/promises'

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

bis0qfac3#

仅供参考,下面是使用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差不多。

相关问题