Protractor предоставляет встроенные методы для управления навигацией
в браузере, которые напрямую взаимодействуют с объектом
browser. Эти методы позволяют имитировать действия
пользователя, такие как возврат на предыдущую страницу, переход вперед
или обновление текущей страницы. Они особенно полезны при тестировании
сложных сценариев, где требуется проверка истории навигации или реакции
приложения на обновление страницы.
browser.back()Метод back() используется для возврата на предыдущую
страницу в истории браузера, аналогично кнопке «Назад».
Синтаксис:
browser.back();
Особенности:
await в сочетании с async функцией.Пример использования:
it('должен вернуться на предыдущую страницу', async () => {
await browser.get('https://example.com/page1');
await browser.get('https://example.com/page2');
await browser.back(); // Возврат на page1
const currentUrl = await browser.getCurrentUrl();
expect(currentUrl).toBe('https://example.com/page1');
});
browser.forward()Метод forward() позволяет перейти на следующую страницу
в истории браузера, аналогично кнопке «Вперед».
Синтаксис:
browser.forward();
Особенности:
back() для возвращения к предыдущему
состоянию.await.Пример использования:
it('должен перейти вперед после возврата', async () => {
await browser.get('https://example.com/page1');
await browser.get('https://example.com/page2');
await browser.back(); // page1
await browser.forward(); // page2
const currentUrl = await browser.getCurrentUrl();
expect(currentUrl).toBe('https://example.com/page2');
});
browser.refresh()Метод refresh() выполняет обновление текущей страницы,
что позволяет проверить, корректно ли приложение сохраняет состояние
после перезагрузки.
Синтаксис:
browser.refresh();
Особенности:
await.Пример использования:
it('должен корректно обновлять страницу', async () => {
await browser.get('https://example.com/form');
await element(by.id('inputName')).sendKeys('Test User');
await browser.refresh(); // Обновление страницы
const inputValue = await element(by.id('inputName')).getAttribute('value');
expect(inputValue).toBe(''); // Проверка сброса формы после обновления
});
browser.waitForAngularEnabled(false).await или
.then() обязательно для корректного выполнения.back() и
forward() работают только в пределах текущей сессии
браузера. Если сессия была перезапущена, история теряется.ExpectedConditions)
для элементов, которые должны появиться на новой странице, чтобы
избежать гонок.it('должен тестировать навигацию и обновление страницы', async () => {
await browser.get('https://example.com/page1');
await browser.get('https://example.com/page2');
await browser.get('https://example.com/page3');
await browser.back(); // page2
await browser.back(); // page1
let currentUrl = await browser.getCurrentUrl();
expect(currentUrl).toBe('https://example.com/page1');
await browser.forward(); // page2
currentUrl = await browser.getCurrentUrl();
expect(currentUrl).toBe('https://example.com/page2');
await browser.refresh(); // обновление page2
const title = await browser.getTitle();
expect(title).toBe('Page 2');
});
Эти методы навигации обеспечивают гибкое управление историей браузера и позволяют создавать тесты, максимально приближенные к реальному поведению пользователя, включая возвраты, переходы вперед и перезагрузку страниц.