我正在 Angular 7 应用程序上进行 E2E 测试,其中有一个测试用例,该应用程序要从UI应用过滤器,并将过滤器附加到URL的URL。作为查询参数。
生成的网址如下:
http://localhost:4000/search?programme=1
但是当我使用browser.getCurrentUrl()
时,它只是返回http://localhost:4000/search
而没有查询参数。
现在我正在使用browser.getLocationAbsUrl()
,但量角器本身抛出错误,它已已弃用。
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
文件中?
是端到端范围还是应该进行单元测试?
答案 0 :(得分:2)
您只需使用then()
上的browser.getCurrentUrl()
来管理诺言。
示例代码:
browser.getCurrentUrl().then(
(res) => {
console.log(res);
// response will includes the url with query params
}
);
答案 1 :(得分:1)
使用异步/等待而不是诺言链。以下应该工作。 getCurrentUrl返回一个Promise,需要解决。请参阅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');
});