Селен - Прокрутка -> перейти к следующей странице (прокрутка вверх) -> перейти назад проверить положение прокрутки - PullRequest
0 голосов
/ 24 октября 2019

Сценарий:

Технология:

  • SPA (React)
  • Селен Javascript

Настройка:

  • 2 страницы (обзор = длинный список, который можно прокручивать, детализация которого довольно мала)
  • Мы сохраняем прокрутку на каждой странице нашего приложения при навигации (в настоящее время в Sessionstorage)

Действия:

  • Прокручиваем сумму Y на странице обзора
  • Щелкаем по элементу и переходим на страницу сведений
  • Страница сведений прокручивается назаднаверх (window.scrollTo (0,0))
  • Переходим назад и прокручиваем к определенному значению в хранилище сеансов
it('DESKTOP - should scroll on overview, navigate to single page view, and come back on the same scroll of the overview', async function() {
    const driver = await getDriver({
      browserName,
      isMobile: false,
      name: `${browserName} - ${this.test.fullTitle()}`,
    });

    await goToUrl(driver, '/overview');

    await scrollTo(driver, 500);

    console.log(await getVerticalScroll(driver)); // Results in 500

    const carsList = await driver.findElements(By.className('overview-cars__item'));
    const lastCar = carsList[carsList.length - 1];
    const id = await lastCar.getAttribute('id');

    console.log('before click', await getVerticalScroll(driver)); // Results in 500

    await lastCar.click();

    console.log('after click', await getVerticalScroll(driver)); // Results in 0

    await driver.navigate().back();

    console.log(await getVerticalScroll(driver)); // Results in 0

    return driver.quit();
  });

Теперь странная вещь:

Это работает, когда я делаю это как пользователь (хотя иногда немного неуклюже), но не работает, когда навигация выполняется селеном.

В конце концов, цель состоит в том, чтобы проверить, находится ли свиток на том же scrollY, что и при выходе пользователя со страницы обзор .

...