В Protractor объект browser представляет браузер,
управляемый WebDriver, и предоставляет широкий набор методов для
навигации, управления окнами, ожиданий и выполнения скриптов. Метод
browser.get() является основным инструментом для загрузки
веб-страниц и взаимодействия с ними.
browser.get(url, timeout);
Метод возвращает Promise, который разрешается после
полной загрузки страницы и выполнения Angular, если приложение является
Angular-приложением. В Protractor все методы браузера асинхронны,
поэтому важно использовать await в сочетании с
async функциями.
await browser.get('https://example.com');
Protractor автоматически ожидает завершения всех асинхронных операций
Angular перед разрешением промиса browser.get(). Это
означает, что нет необходимости добавлять явные ожидания при стандартной
загрузке страниц Angular-приложений.
Если тестируемое приложение не является Angular, нужно отключить ожидания Angular:
browser.waitForAngularEnabled(false);
await browser.get('https://non-angular-site.com');
Метод waitForAngularEnabled(false) временно отключает
внутреннюю синхронизацию Protractor с Angular. После загрузки страницы
можно вернуть синхронизацию:
browser.waitForAngularEnabled(true);
browser.getCurrentUrl() и
browser.getTitle()После вызова browser.get() часто требуется проверка
текущего состояния страницы. Для этого используются методы:
const currentUrl = await browser.getCurrentUrl();
const pageTitle = await browser.getTitle();
getCurrentUrl() возвращает URL текущей
страницы.getTitle() возвращает заголовок
страницы <title>.Эти методы особенно полезны для проверки успешной навигации после
вызова browser.get().
browser.get() поддерживает работу с URL, содержащими
параметры или хэши. Например, для SPA-приложений:
await browser.get('https://example.com/dashboard#section=users');
В этом случае Protractor корректно обрабатывает загрузку страницы и позволяет сразу работать с элементами, относящимися к указанному разделу.
По умолчанию browser.get() ожидает завершения Angular и
загрузки всех ресурсов, но иногда требуется увеличить время ожидания при
медленном соединении или сложных страницах:
await browser.get('https://example.com', 10000); // 10 секунд
Также рекомендуется использовать явные ожидания элементов, чтобы убедиться в готовности страницы к взаимодействию:
const EC = protractor.ExpectedConditions;
const elementToCheck = element(by.id('main-content'));
await browser.get('https://example.com');
await browser.wait(EC.visibilityOf(elementToCheck), 5000);
browser.refresh()Метод browser.get() загружает страницу заново. В
некоторых случаях после выполнения действий на странице требуется
перезагрузка:
await browser.get('https://example.com');
await browser.refresh(); // перезагрузка текущей страницы
Это полезно для тестирования сценариев с изменением состояния страницы или проверки обновления данных.
Protractor использует Control Flow, который
управляет последовательностью выполнения асинхронных операций. В новых
версиях рекомендуется полностью отключить Control Flow и использовать
async/await:
await browser.get('https://example.com');
await element(by.css('.button')).click();
Это гарантирует, что переход на страницу завершен до взаимодействия с элементами.
browser.get() в сочетании с ожиданиями
ExpectedConditions для стабильности тестов.async function goToDashboard() {
await browser.get('https://example.com/dashboard');
await browser.wait(EC.visibilityOf(element(by.id('dashboard-main'))), 5000);
}
browser.get() без
необходимости, чтобы ускорить выполнение тестов.browser.get()Метод browser.get() является базовым инструментом
управления навигацией в Protractor. Он обеспечивает загрузку страниц,
синхронизацию с Angular, управление таймаутами и интеграцию с ожиданиями
элементов. Правильное использование метода, в сочетании с
async/await, ExpectedConditions и настройками
Angular, позволяет создавать стабильные и предсказуемые автотесты.