Сценарий:
Технология:
- 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
, что и при выходе пользователя со страницы обзор .