Я пишу для транспортира с жасмином.Я хорошо разбираюсь в Java и тестировании браузеров, но я новичок в JavaScript и Protractor.
Я работаю над переходом моего кода к «новому» стилю использования асинхронного режима и ожидаю, чтобы перейти к изменениям потока управления (если я ошибаюсь в своем понимании этого, я извиняюсь), и ясталкиваюсь с проблемами, когда дело доходит до конвертации классов объектов моей страницы.Сначала я попытался напечатать свою функцию в «Строка A» как Promise, но я получил ошибку, что «тип any [] не конвертируется в тип ElementArrayFinder».По предложению я изменил его на то, что в настоящее время существует "Обещание", которое компилируется, но не запускается с ошибкой ниже указанного кода.До своего преобразования я просто передавал объект ElementArrayFinder без проблем, и мой код работал, поэтому у меня есть ранее работающий код, мне просто нужно выяснить, как заставить его работать в этой новой структуре.
// my po class
...
// Breadcrumb methods
async getBreadCrumbs(): Promise<any> { // Line A
return await element.all(by.css('bread-crumbs span'));
}
async getProjectNameBreadCrumbText() {
const breadCrumbs: ElementArrayFinder = await this.getBreadCrumbs();
return await breadCrumbs.get(2).getText();
}
async getProjectMapperBreadCrumbText() {
const breadCrumbs: ElementArrayFinder = await this.getBreadCrumbs();
return await breadCrumbs.get(3).getText();
}
Похоже, что компилируется нормально без ошибок IDE в Webstorm, но когда я запускаю его, я получаю сообщение об ошибке:
Failed: breadCrumbs.get is not a function
TypeError: breadCrumbs.get is not a function
И в случае, если это имеет значение, здесь код с использованием вышеуказанного класса POэто вызывает ошибку, когда он вызывает код во время выполнения:
it('test case', async function() {
...
await expect(mapperPage.getProjectMapperBreadCrumbText()).toEqual(mapperPage.MAPPER_BREADCRUMB);
...
});
Я открыт для конструктивной критики о том, как я должен писать этот код, я в большинстве своем отмахиваюсь от объединения кодабит.