TestCafe - 单击 link 后等待页面加载
TestCafe - Wait for page load after click on link
我正在使用 testcafe 进行端到端测试我当前的电子商务项目。在产品列表页面上,我使用选择器 select 产品图块并执行点击。在此之后,页面加载了产品详细信息页面,我可以继续进行测试。
问题是它已经继续执行产品详细信息页面的断言,而页面尚未加载。我假设点击操作将等待元素出现并等待页面加载,然后再继续断言。
测试:
import HomePage from '../pages/HomePage/HomePage';
import ProductListerPage from '../pages/ProductListerPage/ProductListerPage';
import Browser from '../helpers/Browser';
fixture('test case').page('http://www.homepage.com');
test('test 1', async t => {
const homePage = new HomePage();
await homePage.header.search(t, 'foo bar');
await t.expect(Browser.getCurrentLocation()).eql('http://www.product-lister/search?q=3301');
const productListerPage = new ProductListerPage();
await productListerPage.goToFirstProduct(); // <<< in here I click on the first product
await t.expect(Browser.getCurrentLocation()).eql('http://www.product-detail/'); // << already executed on lister page instead of product page
});
ProductListerPage:
import AbstractPage from '../AbstractPage';
import {t, Selector} from "testcafe";
class ProductListerPage extends AbstractPage {
constructor() {
super();
this._productTilesContainer = Selector('.productLister-productTeasersInner');
this._productTiles = this._productTilesContainer.child('a.productListerTeaser');
}
async goToFirstProduct() {
return await t.click(this._productTiles.nth(0));
}
}
export default ProductListerPage;
是否有另一种等待页面加载而不是仅使用睡眠的方法?或者最好的解决方案是什么?
此致,
康乃尔
您可以指定一个超时值,这样 expect 将等待一定的时间,直到您的页面出现在 url 上。根据您需要多少时间,您可以将超时更改为更低或更高,否则它使用默认超时,我不记得默认是什么?
的更多信息
await t.expect(Browser.getCurrentLocation()).eql('http://www.product-detail/', {timeout: 5000});
我正在使用 testcafe 进行端到端测试我当前的电子商务项目。在产品列表页面上,我使用选择器 select 产品图块并执行点击。在此之后,页面加载了产品详细信息页面,我可以继续进行测试。
问题是它已经继续执行产品详细信息页面的断言,而页面尚未加载。我假设点击操作将等待元素出现并等待页面加载,然后再继续断言。
测试:
import HomePage from '../pages/HomePage/HomePage';
import ProductListerPage from '../pages/ProductListerPage/ProductListerPage';
import Browser from '../helpers/Browser';
fixture('test case').page('http://www.homepage.com');
test('test 1', async t => {
const homePage = new HomePage();
await homePage.header.search(t, 'foo bar');
await t.expect(Browser.getCurrentLocation()).eql('http://www.product-lister/search?q=3301');
const productListerPage = new ProductListerPage();
await productListerPage.goToFirstProduct(); // <<< in here I click on the first product
await t.expect(Browser.getCurrentLocation()).eql('http://www.product-detail/'); // << already executed on lister page instead of product page
});
ProductListerPage:
import AbstractPage from '../AbstractPage';
import {t, Selector} from "testcafe";
class ProductListerPage extends AbstractPage {
constructor() {
super();
this._productTilesContainer = Selector('.productLister-productTeasersInner');
this._productTiles = this._productTilesContainer.child('a.productListerTeaser');
}
async goToFirstProduct() {
return await t.click(this._productTiles.nth(0));
}
}
export default ProductListerPage;
是否有另一种等待页面加载而不是仅使用睡眠的方法?或者最好的解决方案是什么?
此致, 康乃尔
您可以指定一个超时值,这样 expect 将等待一定的时间,直到您的页面出现在 url 上。根据您需要多少时间,您可以将超时更改为更低或更高,否则它使用默认超时,我不记得默认是什么?
的更多信息await t.expect(Browser.getCurrentLocation()).eql('http://www.product-detail/', {timeout: 5000});