【发布时间】:2021-09-29 22:36:43
【问题描述】:
我正在使用expect(page.url()).toContain('/nav'); 测试我们网站上的导航。
浏览代码时,我可以清楚地看到我们在点击后点击了那个 url 字符串。
我已经尝试将我的代码放入和排除相同错误的承诺:
Expected substring: "/nav"
Received string: "https://website.com/about"
283 | page.waitForNavigation();
284 | await page.hover('nav >> text=Nav');
285 | await page.click('nav >> text=Nav');
286 | console.log(page.url());
> 287 | expect(page.url()).toContain('/nav');
| ^
288 |
289 | page.click('text=Next Nav')
290 | expect(page.url()).toContain('/nextNav');
链接本身是一个简单的<a href="/nav" class="list__item__link" data-v-0df6efc8>Nav</a>。
控制台日志显示https://website.com/about。
这是一个与 cmets 相关的 sn-p:
////##OURSTORY##////
page.hover('nav >> text=Our Story');
page.waitForNavigation();
await page.click('nav >> text=About');
expect(page.url()).toContain('story');
//await page.pause();
await page.hover('nav >> text=Our Story');
await page.hover('nav >> text=360° Wellness');
await page.click('nav >> text=360° Wellness');
console.log(page.url());
await page.waitForNavigation();
expect(page.url()).toContain('/360-wellness');
【问题讨论】:
-
你试过把url转换成字符串吗?
-
如果
url()已经返回一个字符串,那么page.url()之前缺少的await可能会解决它吗?请让我们知道这是否有效。 -
我在
page.url()之前添加了一个await并没有帮助。我的 IDE 甚至说不需要。page.url()已经将其转换为字符串,这是一个内置功能。 -
我明白了。而且您肯定该网址实际上包含
/nav文本?你用headless: false测试过这个吗? -
是的,我可以确认。当使用
await page.pause()并单步执行代码时,我可以在url 中明显看到/nav,然后得到上面的错误。而且我总是在headless: false中运行我的测试。
标签: automation playwright