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)
即可解决您的问题