Я использую testcafe для e2e, тестируя мой текущий проект электронной коммерции. На странице списка товаров я использую Селектор, чтобы выбрать плитку товара и выполнить щелчок. После этого страница загружает страницу сведений о продукте, и я могу продолжить тестирование.
Проблема заключается в том, что он уже продолжается с утверждениями на странице сведений о продукте, пока страница еще не загружена. Я предположил, что действие щелчка будет ждать появления элемента и ждать загрузки страницы, прежде чем продолжить утверждения.
тест:
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;
Есть ли другой способ ожидания загрузки страницы вместо просто сна? Или какое лучшее решение?
С уважением,
Корнел