使用wdio v4 +黄瓜我使用了一些afterSteps,并且知道我正在尝试在v5 +黄瓜中使用它,但似乎没有按顺序运行。 在我的afterStep上,我进行了某些验证,即,如果result.status ===失败,那么我将截取屏幕截图并执行一些额外的步骤,问题是我能够截取屏幕截图,但是我无法执行额外的步骤,因为当执行afterStep后,跑步者已经在执行另一个测试用例。
有时它会成功获取错误页面的屏幕截图,但其他步骤从未完成,因为到达该位置时,跑步者已经在执行另一个测试用例。.
这是我在AfterStep上为v5(从v4更新)使用的代码:
afterStep: function (uri, feature, scenario, step, result) {
if (result.status === 'failed') {
const path = './errorShots/'+Date.now()+'.png';
browser.saveScreenshot(path);
const allitems = $('.slds-icon-waffle');
const logoutBut = $('button[title="Logout"]');
const adminMenu = $('.oneAppLauncherItemList a[title="Parsable Admin"]');
const sfProfilelogo = $('.profileTrigger');
const sflogOut = $('.profile-link-label.logout.uiOutputURL');
this.allitems.waitForDisplayed();
this.allitems.click();
this.adminMenu.waitForVisible();
this.adminMenu.click();
browser.pause(2000)
if (this.logoutBut.isVisible()) {
this.logoutBut.click();
}
this.sfProfilelogo.waitForVisible();
this.sfProfilelogo.click();
this.sflogOut.waitForVisible();
this.sflogOut.click();
}
console.log(step.text + ' is ' + result.status)
},
** WebdriverIO版本:v5.11.2 **模式:硒独立 **如果是WDIO Testrunner,则运行同步/异步:同步 ** Node.js版本:v10.16.0 ** NPM版本:v6.9.0 **浏览器名称和版本:Chrome **平台名称和版本:MacOS
我如何确保在执行下一步之前完全完成afterStep? 我已经尝试过使用Promise,但是我不确定自己是否执行得很好,有帮助吗?
答案 0 :(得分:0)
v4(带有黄瓜)存在与钩子相关的问题。(不确定是否已解决)
参考:https://github.com/webdriverio-boneyard/wdio-cucumber-framework/issues/151
我们在项目中执行以下操作来解决该问题:将以下代码添加为stepDefinition文件的一部分。
// Added this hook to make failed step screenshot feature work.
// NOTE: Since the after hook is placed here there cannot be AFTER hooks in runner file.
After((scenario)=>{
if(Status.FAILED === scenario.result.status){
browser.screenshot();
console.log('Scenario Failed. Screenshot taken!!');
}
});