onAuthRequired срабатывает только один раз в Chrome версии> 72 - PullRequest
0 голосов
/ 31 марта 2020

В нашем проекте мы используем 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, или видит ошибку, которую мы допустили в нашем расширении ?

Любая помощь приветствуется

...