无法为E2E测试创建返回ElementArrayFinder的异步方法

时间:2017-10-26 10:23:07

标签: async-await protractor e2e-testing

我有一个类,我想创建一个异步方法,它将返回ElementArrayFinder。我需要这种类型,而不是ElementFinder [],因为我的服务员基于它,我可以等待DOM中现在不存在的元素。您可以在下面找到结构的简单示例。在''返回this.collection;'我有一个错误:

  

[TS]   类型'any []'不能分配给'ElementArrayFinder'类型。    “any []”类型中缺少属性“browser_”。

我尝试以不同的方式投射结果并尝试使用Promise.resolve,但没有成功。有人可以帮我解决这个案子吗?

export class Test {
    private grid1: ElementFinder;
    private grid2: ElementFinder;

    get collection1(): ElementArrayFinder {
        return this.grid1
            .element(by.css('tbody'))
            .all(by.tagName('tr'));
    }

    get collection2(): ElementArrayFinder {
        return this.grid2
            .element(by.css('tbody'))
            .all(by.tagName('tr'));
    }


    public async getCollection(): Promise<ElementArrayFinder> {

        if (await this.collection.count() === 0) {
            return this.collection1;
        }
        return this.collection2;
    }
}

错误报告

  • 节点版本:v8.2.1
  • 量角器版本:5.2.0

1 个答案:

答案 0 :(得分:0)

我在文件element.d.ts文件中找到了答案。

    ChromeOptions options = new ChromeOptions().setBinary("/Applications/Brave.app/Contents/MacOS/brave");
    WebDriver driver = new ChromeDriver(options);

基于此文档,ElementArrayFinder类型由.then解析为ElementFinder []。这就是为什么我无法创建在promise中返回ElementArrayFinder类型的方法,但是可以创建只返回ElementArrayFinder类型的方法。