我正在使用 webdriverio v4 和 chai 在登录表单中输入值,单击登录按钮并验证导航到的 URL:
describe('login form', function () {
it('should allow access with correct credentials', function () {
LoginPage.open();
LoginPage.username.setValue('name');
LoginPage.companyCode.setValue('100');
LoginPage.password.setValue('password');
LoginPage.loginButton.click();
expect(browser.getUrl()).to.equal('URL path');
});
});
值已成功输入,并且已导航到预期的 URL。但是,browser.getURL() 返回的是基本 URL 而不是新 URL?
我做错了什么?
URL 可能检索得太快。您可能需要等到页面加载新页面后才能获取 URL。
可以使用类似于
waitUntil
的内容并检查回调中的 URL。像这样:
browser.waitUtil(function() {
return browser.getUrl() === urlToCheck;
}, 5000);
我遇到了同样的问题,我可以通过使函数异步并在
browser.getURL()
函数前面添加等待来解决此问题。
describe('login form', async () => {
it('should allow access with correct credentials', function () {
await LoginPage.open();
await LoginPage.username.setValue('name');
await LoginPage.companyCode.setValue('100');
await LoginPage.password.setValue('password');
await LoginPage.loginButton.click();
await expect(await browser.getUrl()).to.equal('URL path');
});
});