为什么“就地”功能不能引用它所在的类?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么“就地”功能不能引用它所在的类?相关的知识,希望对你有一定的参考价值。
我有这个代码,我正在使用等待页面上的面包屑加载。问题是我创建自己的函数而不是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);
});
我很抱歉,如果这是一个重复的问题,我不知道如何谷歌我要求的,因为我不确定我写的这段代码的正确术语。
好像你将函数作为参数传递。所以the scope can be changed。您可以使用arrow function来访问正确的范围:
await browser.wait(
async () => (await this.getProjectNameBreadCrumbText()).includes(projectName),
this.DEFAULT_WAIT_TIME_SECONDS * 1000,
'Name Breadcrumb for this page never loaded.'
);
作为其他选项 - 您可以手动bind函数到所需范围:
this.getProjectNameBreadCrumbText = this.getProjectNameBreadCrumbText.bind(this);
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.')
以上是关于为什么“就地”功能不能引用它所在的类?的主要内容,如果未能解决你的问题,请参考以下文章
在 Visual Studio 中创建构造函数的代码片段或快捷方式
解决未能加载文件或程序集“Newtonsoft.Json ...."或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)(代码片段