В нашем проекте мы используем Selenium для тестирования нашего веб-приложения Angular с использованием образа docker и chrome с версией 70.0.3538.77 (Официальная сборка) (64-разрядная версия). Поскольку приложение использует аутентификацию basi c на наших серверах, мы создали собственное расширение для прослушивания «onAuthRequired», и всякий раз, когда это происходит, мы возвращаем имя пользователя и пароль ( Оригинальный источник ).
Простым тестом для нашего приложения было бы перейти на главную страницу (basi c auth login требуется во всплывающем окне), а затем на другую подстраницу, которая размещена внутри этой страницы в iframe, где аутентификация basi c требуется снова.
Мы добавили некоторые записи в расширение, просто чтобы проверить, запускается ли onAuthRequired, поэтому расширение в настоящее время выглядит следующим образом:
if (!chrome.webRequest.onAuthRequired.hasListener(retrieveCredentials)) {
chrome.webRequest.onAuthRequired.addListener(
retrieveCredentials,
{urls: ["<all_urls>"]},
['blocking']
);
}
function retrieveCredentials(details) {
console.log("onAuthRequired");
return {
authCredentials: {
username: username,
password: password
}
};
}
Мы обнаружили, что с версией 72.0.3626 это все еще работало. Расширение будет заполнять оба возникающих приглашения на вход в систему, и мы увидим два сообщения с «onAuthRequired» в консоли.
Однако с версией 73.0.3683 и новее это, похоже, больше не работает. Только один раз вызывается onAuthRequired (retrieveCredentials-Method), и второе всплывающее окно игнорируется расширением. Это позволяет тестам Selenium провалиться с исключением по тайм-ауту, поскольку навигация больше не работает.
Кто-нибудь знает, как справиться с этим в более новых версиях Chrome, или видит ошибку, которую мы допустили в нашем расширении ?
Любая помощь приветствуется