为什么isElementPresent()在我的量角器脚本中不起作用?

时间:2019-04-22 21:19:20

标签: typescript automation protractor

我使用VS Code编写TypeScript,最终将其编译为量角器并执行脚本。

VSCode似乎无法自动完成element.isPresent()element.isElementPresent,这使我发疯。

下面是我的代码。

helper.ts


import { browser, by, ElementArrayFinder, WebElement, ElementFinder } from 'protractor';

async isElementPresent(element: WebElement): Promise<boolean> {

        expect(await element.isElementPresent().toBe(true));
}

我想通过将expandAllLink作为参数传递给helper函数来检查是否存在expandAllLink。

spec1.ts

expandAllLink: WebElement = element(by.xpath("//span[contains(text(),'Expand All')]"));

2 个答案:

答案 0 :(得分:2)

您还可以尝试以下操作:

let el: ElementFinder = $('cssSelector');
expect(el.isPresent()).toBeTruthy();

因为isPresent()返回Promise<boolean>

答案 1 :(得分:1)

您的代码中发现了两个问题。

1)isElementPresentbrowser对象的功能,但element

2)代码中的expect().toBe()和一对()不匹配的

import { browser, by, ElementArrayFinder, WebElement, ElementFinder } from 'protractor';

async isElementPresent(ele: WebElement): Promise<boolean> {
    // below is your code with wrong pair of ()
    expect(await element.isElementPresent().toBe(true));

    // expect().toBe() should return Pormise<null>
    let present = await browser.isElementPresent(ele);
    expect(present).toBe(true);
    return present;

    // if this function is for getting the present state of elment
    // recommend move expect out of this function.

    // if this function is for validating the present state,
    // recommend make function return value to void.
}