Я выполняю тестирование Е2Е в своем приложении Угловой 7, где у меня есть тестовый пример, в котором я применяю фильтры из пользовательского интерфейса, и фильтр прикреплен к URL-адресу как параметры запроса.
Сгенерированный URL будет выглядеть так:
http://localhost:4000/search?programme=1
Но когда я использую browser.getCurrentUrl()
, он просто возвращает http://localhost:4000/search
без параметры запроса.
Сейчас я использую browser.getLocationAbsUrl()
, но сам Protractor выдает ошибку устарел.
it('Select GV filter and check params', () => {
searchPage.selectOnePrgram();
expect<any>(browser.getLocationAbsUrl()).toContain('program=1');
// [11:53:11] W/protractor - `browser.getLocationAbsUrl()` is deprecated, please use `browser.getCurrentUrl` instead.
});
Мой вопрос: как я могу получить параметры запроса в свой файл .spec.ts
?
ЕСТЬ ЛИ ЭТО ВООБЩЕ В E2E SCOPE ИЛИ ОН ДОЛЖЕН БЫТЬ В МОДУЛЬНОМ ТЕСТЕ?
Вы просто управляете обещанием, используя then()
, которое вы получаете от browser.getCurrentUrl()
.
Пример кода:
browser.getCurrentUrl().then(
(res) => {
console.info(res);
// response will includes the url with query params
}
);
используйте async/await вместо цепочки промисов. Следующее должно работать. getCurrentUrl возвращает обещание и требует разрешения. См. https://www.protractortest.org/#/api?view=webdriver.WebDriver.prototype.getCurrentUrl-
it('Select GV filter and check params', async () => {
await searchPage.selectOnePrgram();
let currentLoc = await browser.getCurrentUrl();
expect(currentLoc).toContain('program=1');
});