Javascript 未处理的PromisejectionWarning:未处理的承诺拒绝。使用aync和WAIT时,量角器控制台显示警告
我已经使用量角器编写了下面的自动化代码Javascript 未处理的PromisejectionWarning:未处理的承诺拒绝。使用aync和WAIT时,量角器控制台显示警告,javascript,jasmine,protractor,Javascript,Jasmine,Protractor,我已经使用量角器编写了下面的自动化代码 this.promoteToOperationaltSandboxes3 = async function(){ const allMainPanel = element.all(by.className('tropos-appbox-main-panel col-md-12')); console.log(typeof allMainPanel); console.log('In the wait
this.promoteToOperationaltSandboxes3 = async function(){
const allMainPanel = element.all(by.className('tropos-appbox-main-panel col-md-12'));
console.log(typeof allMainPanel);
console.log('In the wait function , number of the main panels is '+allMainPanel.length);
const allLitags = await allMainPanel[0].all(by.className('dropdown-menu ng-scope')).all(by.tagName('li'));
console.log('In the wait function , number of the litags is '+allLitags.length);
}
我在我的一个规范文件中调用这个函数,如下所示
await appsPage.promoteToOperationaltSandboxes3();
执行此功能时,即使浏览器未打开,也会将erorr设置为
信息:
TypeError:无法读取未定义堆栈的属性“all”:
TypeError:无法读取未定义的属性“all”
此外,在日志中,我可以看到以下消息:
在等待功能中,主面板的数量未定义
有谁能帮助我解决这些问题并帮助我更好地处理承诺。您应该更改
allMainPanel
以首先获取索引:
const allMainPanel = element.all(by.className('tropos-appbox-main-panel col-md-12')).get(0);
然后,allLitags
也可以分为两个单独的变量:
const allLitags = allMainPanel.all(by.className('dropdown-menu ng-scope'));
const liElement = await allLitags.all(by.tagName('li'));
您确定所有等待都是针对返回承诺的函数调用的吗?i、 e.您希望从中得到什么:allMainPanel[0]。全部(按.className('dropdown-menu ng scope'))。全部(按.tagName('li'))?这似乎是正确的。您不能使用必须使用的
[]
访问elementArrayFinder
中的元素。只需将allMainPanel[0]
更改为allMainPanel.get(0)
即可解决您的问题