nightwatch - 在每次点击事件后检查弹出窗口 window

nightwatch - check for popup window, after each click event

nightwatch 中有没有办法检查每次点击事件后是否出现弹出 window?

我有一个问题,运行通常会出现一条错误消息,我不想为每个点击事件编写相同的回调函数。

我已经在 Global.js 中尝试了 afterafterEach 命令,但是在整个测试套件之后这些命令只会 运行。

我也在测试文件中本地尝试过,尽管它也没有涵盖所有单击事件,即使官方网站写道“......而beforeEachafterEach是运行 每个测试用例(测试步骤)之前和之后"?

我正在寻找的解决方案:

.waitForElementVisible('selector')
    .click('selector')  
    .click('selector')  
 

到目前为止我想出的解决方案:

.waitForElementVisible('selector')
    .click('selector', isPresent)  
    .click('selector', isPresent)  

isPresent 作为回调函数,它会检查并关闭弹出 window 如果它出现。

有没有其他方法可以写一个函数(带或不带after and/or forEach),以便在每次点击事件或每个命令后调用。因此,我不必编写 isPresent 重复代码?

你应该使用 .switchWindow() 方法。

为什么不针对这种情况编写自己的自定义命令,这样就可以避免重复代码?

您可以在页面对象文件中插入类似这样的内容:

var popupCommand = {
 popupCheck:function(){
return this.waitForElementVisible('selector', 5000)
  .click('selector', isPresent)
  .click('selector', isPresent)

},

module.exports = {
commands:[popupCommand],
elements:{
firstElement: {selector: 'xpath',locateStrategy: 'xpath'},
secondElement: {selector: 'css'},


 }
}

其中 'popupCommand' 将是您的页面对象文件的名称,例如 'Popup'。而且您还必须在此处插入您的 isPresent 回调函数,以便您可以使用它。 我已尽力向您尽可能多地解释该做什么以及如何做:)