在量角器中使用本机承诺
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在量角器中使用本机承诺相关的知识,希望对你有一定的参考价值。
有没有办法使用量角器filter
接受一个返回量角器自己的Promise类型的函数,我自己的函数返回本机Promise?
const myFilter = async(e: ElementFinder): Promise<boolean> => {
...
}
myElements.filter(myFilter)
这会引发TypeScript编译错误
TS2345:类型'(e:ElementFinder)=>> Promise'的参数不能赋值给'参数'(元素:> ElementFinder,index?:number)=> boolean |诺言'。类型'Promise'不能赋值为'boolean |诺言'。 “承诺”类型不能分配给“promise.Promise”类型。 “承诺”类型中缺少“取消”属性。
顺便说一句,我不能自己创造量角器的承诺,因为堕落(https://github.com/SeleniumHQ/selenium/issues/2969)
答案
我刚刚遇到这个问题,并且无法创建一个需要量角器承诺并返回本机Promise的函数。所以我认为答案是否定的。
我最终得到的解决方案是创建一个同步函数,如下所示:
export function filterBy(elements: ElementArrayFinder, locator: By | Locator | ProtractorLocator): ElementArrayFinder {
return elements.filter((element: ElementFinder) => element.element(locator).isPresent());
}
用法如下:
let elements = element.all(by.css('CSS_RULE'));
let filtered = filterBy(elements, by.css('CHILD_CSS_RULE'));
我尝试了一天多的时间来获得一个返回本机Promise但无法使其工作的函数。但是这个功能应该适合您的需求。
以上是关于在量角器中使用本机承诺的主要内容,如果未能解决你的问题,请参考以下文章
量角器异步/等待 UnhandledPromiseRejectionWarning:未处理的承诺拒绝
量角器中的“defaultTimeoutInterval”何时重置?