Может быть, вы упускаете что-то, чего я не вижу, поскольку ваш пример сокращен.Вот полный пример, содержащий все необходимое для одного теста.
У меня есть мнимый компонент foo, расположенный в папке foo.В этой папке у меня также есть PO-файл.
Foo Component (символическая структура папок)
- foo.component.ts
- foo.component.css
- foo.component.html
- foo.component.po.ts
foo.component.html
Содержит метку, о которой мы говорим
<label #name class="form-control-label" id="foo-name" for="field_nombre" >Nombre</label>
...
<label #age class="form-control-label" id="foo-age" for="field_edad" >Edad</label>
foo.component.po.ts
Константы являются заменой полей id элементов вHTML-шаблоны.
import { ElementFinder, element, by, browser } from 'protractor';
const nameInputField = 'foo-name';
const ageInputField = 'foo-age';
export class FooComponentPO {
getNameInputField(): ElemenFinder {
return element(by.id(nameInputField));
}
// just for the example
getAgeInputField(): ElemenFinder {
return element(by.id(ageInputField));
}
}
foo.test.e2e.ts (находится где-то еще в вашей иерархии каталогов)
Импортируйте ваш PO-файл в свой тестовый файл исоздать локальный экземпляр этого.Тогда используйте это в своих тестах.Именно так я делаю это каждый день.
import { FooComponentPO } from '../../src/app/components/foo/foo.component.po.ts';
import { ElementFinder, element, by, browser } from 'protractor';
const fooComponentPO = new FooComponentPO();
it('calls the browser-link', () => {
page.navigateTo(); // this is your call.
// now the browser needs a while until the page is build up.
// wait some time
browser.waitForAngular();
browser.sleep(2000);
});
// Now give it a try
it('should contain the text foo', () => {
fooComponentPO.getNameInputField().getAttribute('value').then( text => {
console.log('This is the label ' + text);
expect<any>(text).toContain('foo');
});
});