【发布时间】:2018-03-08 22:14:27
【问题描述】:
我正在使用 Selenium + Mocha(在 Node.js 中)在网站上进行一些 UI 测试。每次测试后,我都想截取屏幕截图,以便查看/分享可见的结果。
但是,在进行基本 UI 更改(即插入文本并点击提交)之后,会触发一个 AJAX 调用 + JavaScript 动画,我想成为我的屏幕截图的一部分。
我得到的屏幕截图似乎是在下一步开始之后拍摄的。 (所以,第一次测试运行>触发截图>第二次测试开始>截图被实际捕获)
我已经尝试过 .sleep() 和超时 - 但是我的使用可能是错误的。
function takeScreenshot(name='out'){
driver.takeScreenshot().then(function(data){
var base64Data = data.replace(/^data:image\/png;base64,/,"")
fs.writeFile(`screenshots/${name}.png`, base64Data, 'base64', function(err) {
if(err) console.log(err);
});
});
}
describe('UI Tests', async function() {
before(async function() {
driver = await new Builder().forBrowser('chrome').build();
await driver.get('http://localhost:8000').then( async function(){ await getAssets(); });
/* search | submit | reset are declared in getAssets() */
});
after(async function() {
driver.quit();
});
afterEach(async function(){
step++;
driver.sleep(3000).then(
takeScreenshot(step)
);
});
describe('User Types/Modifies Input and Submits Query', async function() {
it('type in search + click submit', async function(){
search.sendKeys("Puppies and Kittens");
submit.click();
});
it('click the X icon to clear search', async function(){
reset.click();
});
});
});
在上面的 sn-p 中,第一个测试 ('type in search + click submit') 的屏幕截图将显示输入字段已从第二个测试中清除。
【问题讨论】:
标签: javascript node.js selenium mocha.js screenshot