我开始为一个网站应用程序开发测试,我遇到了一些问题。我使用的是Node.js、webdriver、chromedriver和selenium rc。这些问题是:1.如何制作截图并将其保存在与脚本相同的文件夹中。2.是否有办法保存测试用例的测试日志?例如,如果在页面上检查某个元素,但没有找到它,如何输出?
gg0vcinb1#
为了保存测试日志,你通常使用测试运行器。当你检查一个元素是否在页面上,你不能找到它,那么你引发一个异常(通常是Assert错误),测试运行器将记录这一点,并标记为失败的测试。在文档中,他们建议你使用Mocha。至于将屏幕截图保存到磁盘,API如下所示
driver.takeScreenshot().then( function(image, err) { require('fs').writeFile('out.png', image, 'base64', function(err) { console.log(err); }); } );
flvtvl502#
将aychedee的答案修改为完整的承诺,该承诺将在文件写入后解决,并在写入失败时拒绝:
const fsp = require('fs').promises function takeScreenshot(driver, file){ return driver.takeScreenshot() .then(image => fsp.writeFile(file, image, 'base64')) }
或在ESM async函数中
async
import { writeFile } from 'node:fs/promises' async function takeScreenshot(driver, file){ let image = await driver.takeScreenshot() await writeFile(file, image, 'base64') }
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差不多。
3条答案
按热度按时间gg0vcinb1#
为了保存测试日志,你通常使用测试运行器。当你检查一个元素是否在页面上,你不能找到它,那么你引发一个异常(通常是Assert错误),测试运行器将记录这一点,并标记为失败的测试。在文档中,他们建议你使用Mocha。
至于将屏幕截图保存到磁盘,API如下所示
flvtvl502#
将aychedee的答案修改为完整的承诺,该承诺将在文件写入后解决,并在写入失败时拒绝:
或在ESM
async
函数中bis0qfac3#
仅供参考,下面是使用WebdriverJS进行屏幕截图的方法:
你也可以用WebdriverCSS来截图,它是WebdriverJS做CSS回归测试的插件,和PhantomCSS差不多。