TestCafe - дождитесь загрузки страницы после нажатия на ссылку - PullRequest
0 голосов
/ 29 августа 2018

Я использую 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;

Есть ли другой способ ожидания загрузки страницы вместо просто сна? Или какое лучшее решение?

С уважением, Корнел

1 Ответ

0 голосов
/ 29 августа 2018

Вы можете указать значение тайм-аута, так что ожидающий будет ждать определенное количество времени, пока ваша страница будет на этом URL. В зависимости от того, сколько вам нужно времени, вы можете изменить время ожидания на меньшее или большее, иначе оно использует время ожидания по умолчанию, я не могу вспомнить, какое значение по умолчанию?

больше информации о Опции селектора

await t.expect(Browser.getCurrentLocation()).eql('http://www.product-detail/', {timeout: 5000});

...