Javascript 动态加载列表的单个测试用例-WDIO Mocha

Javascript 动态加载列表的单个测试用例-WDIO Mocha,javascript,selenium,testing,dynamic,mocha.js,Javascript,Selenium,Testing,Dynamic,Mocha.js,在我的网站,我有一个模态。在这个模式中,有选项卡,选项卡中有子选项卡的可能性 使用WDIO、Mocha和selenium,我的目标是登录到系统,加载模式,然后针对每个选项卡(如果没有子选项卡),验证表单上的数据。如果存在子选项卡,请验证每个子选项卡上的数据,然后转到下一个选项卡并重复 以下是一个例子: 模式1包含选项卡:运动、科学、食品 在“运动”选项卡中,有曲棍球和足球 在“科学”选项卡中,没有子选项卡 在食品标签中,有水果、蔬菜、蛋白质 本例的预期输出为: 登录 打开模型 单击运动选项

在我的网站,我有一个模态。在这个模式中,有选项卡,选项卡中有子选项卡的可能性

使用WDIO、Mocha和selenium,我的目标是登录到系统,加载模式,然后针对每个选项卡(如果没有子选项卡),验证表单上的数据。如果存在子选项卡,请验证每个子选项卡上的数据,然后转到下一个选项卡并重复

以下是一个例子:

模式1包含选项卡:运动、科学、食品

  • 在“运动”选项卡中,有曲棍球和足球
  • 在“科学”选项卡中,没有子选项卡
  • 在食品标签中,有水果、蔬菜、蛋白质
本例的预期输出为:

  • 登录
  • 打开模型
  • 单击运动选项卡->查看子选项卡->单击每个子选项卡并验证数据
  • 单击科学选项卡查看是否有子选项卡验证数据
  • 单击食物选项卡->查看子选项卡->单击每个子选项卡并验证数据
请注意,这些选项卡是动态加载的-因此可能会有更多/更少的

我已经尝试过的步骤

  describe('Test suite for modal 1', function(){
       it('Login', function(){
            functions.login(); //Logs into the system
       });

       it('Open modal', function(){
            functions.openModal(); //Opens Modal
            tabs = functions.getTabs(); //Global variable tabs[]
       });

       tabs.forEach(function(tab){
            tab.click(); //Loads the tab
            subtabs = functions.getSubTabs(); //Global variables subtabs[]
            it('Validate tab', function(){
                 if(subtabs.length > 0){ //If there ARE subtabs
                      subtabs.forEach(function(subtab){ //For each subtab
                            it('Validate subtab', function(){
                                 subtab.click(); //Load the subtab
                                 validateForm(); //Validate the data
                            });
                      });
                 } 
                 validateForm();
            });
       });
   });
我现在明白了,这是行不通的,因为它不能相互嵌套

我也试过了

描述('Test model',function()){
用于(选项卡中的常量项){
它('现在应该循环通过选项卡',函数(项){
log(arr1[item].getText());
浏览器.暂停(2000年);
})
用于(子选项卡中的常数项2){
它('现在应该循环通过子选项卡',函数(项){
log(arr2[item2].getText());
浏览器.暂停(2000年);
})
}
}

})
为什么要迭代它,或者您可以在它内部定义for循环,它将解决您的问题。在每一步之间,你都可以通过承诺来验证我想要迭代的函数,因此,如果其中一步失败,它不会停止整个测试。相反,它将继续到下一个选项卡/子选项卡,并提醒我失败。