Почему isElementPresent () не работает в моих скриптах транспортира? - PullRequest
0 голосов
/ 23 апреля 2019

Я использую 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, передав его в качестве параметра вспомогательной функции.

spec1.ts

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

Ответы [ 2 ]

2 голосов
/ 23 апреля 2019

Вы также можете попробовать следующее:

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

из-за isPresent() возврат Promise<boolean>

1 голос
/ 23 апреля 2019

В вашем коде обнаружено две проблемы.

1) isElementPresent является функцией browser объекта, но 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.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...