У меня есть этот код, который я использую, который ожидает загрузки крошки на страницу. Проблема в первой строке, в которой я создаю свою собственную функцию для использования вместо ExpectedCondition, поскольку ExpectedConditions не выполняет проверку содержимого, и это то, что мне нужно в этом месте. Так как я сделал свою собственную функцию на месте, я, кажется, за пределами области класса, в котором я нахожусь. Поэтому я забыл о том, почему это нарушает область видимости и почему я не могу ссылаться на другой метод getProjectNameBreadCrumbText()
, который существует в моем классе из этого метода на месте.
Я обнаружил проблему, когда получил ошибку Failed: Cannot read property 'getProjectNameBreadCrumbText' of undefined
. Я понимаю, что this
не определено, но я не понимаю, почему. Я также не знаю, смогу ли я как-то передать this
и, следовательно, класс, в котором я нахожусь по ссылке, потому что я не уверен в точной терминологии кода, который я сейчас использую.
// My Page Object class
export class MapperPage {
...
async getProjectNameBreadCrumbText() {
return await this.breadCrumbs.get(2).getText();
}
...
async waitAndVerifyProjectNameBreadCrumbs(projectName: string) {
await browser.wait(async function() {return (await this.getProjectNameBreadCrumbText()).indexOf(projectName) > -1;},
this.DEFAULT_WAIT_TIME_SECONDS * 1000, 'Name Breadcrumb for this page never loaded.');
expect(await this.getProjectNameBreadCrumbText()).toContain(projectName);
expect(await this.getProjectMapperBreadCrumbText()).toEqual(this.MAPPER_BREADCRUMB);
}
}
// In my test I call the waitAndVerify method like so
...
it('test', async() => {
const PROJECT_NAME = 'Project Name';
... // do other things
// wait for the page to load by making sure the breadcrumbs have loaded
await waitAndVerifyProjectNameBreadCrumbs(this.PROJECT_NAME);
});
Приношу свои извинения, если это дублирующий вопрос, я не знал, как Google, что я прошу, так как я не уверен в правильной терминологии для этого кода, который я пишу.