Как найти атрибуты окна Chrome Сертификат безопасности для автоматизации с помощью Selenium и AutoIT? - PullRequest
0 голосов
/ 06 апреля 2020

Так что в будущем мой проект переходит на поддержку Chrome. Это оставляет меня с задачей обновления наших пакетов автоматического тестирования в соответствии с изменениями. Я столкнулся с проблемой, касающейся Chrome и разницы между окном выбора сертификата и окном, отображаемым в IE. Мне нужно выяснить, как я могу получить атрибуты окна Chrome, чтобы я мог использовать AutoIT для взаимодействия с ними. Есть несколько предостережений:

  1. Я не могу sh выбрать сертификат. Это внутренняя система, но по какой-то неизвестной мне причине наши среды разработки и тестирования используют функциональность карты CA C. Чтобы получить доступ к среде devdefault, они создали бэкдор, чтобы обойти его, выбрав Cancel в диалоге Cert. Это то, что я пытаюсь сделать.

  2. Я бы предпочел использовать AutoIT, но если есть лучшее решение, не стесняйтесь его предлагать. Я не могу вносить изменения в реестр, чтобы вообще обойти окно, и это решение я видел на этом сайте много раз.

Вот код, который я использую для IE, для примера того, что я пытаюсь выполнить sh здесь:

  public void LoginMethod(string id)
    {
        DebuggingHelpers.Log.Info("Logging In.");
        if (UIValidations.IsElementPresent(By.Id("CACPress")))
        {
            UIActions.GetElement(CACTermsButton).SendKeys(Keys.Enter);
            DebuggingHelpers.Log.Info("Calling CancelSecurity DiaLogue");
            CancelSecurityDiaLogue();
            Thread.Sleep(50);
            ObjectRepository.Driver.SwitchTo().DefaultContent();

            UIActions.TypeInTextBox(CacTextBox, edipin);
            UIActions.ClickElement(CACEdipinLoginButton);
        }
        else
        {
            UIActions.GetElement(EdiTextbox).SendKeys(edipin);
            UIActions.GetElement(EdipinLoginButton).Click();
        }
        DebuggingHelpers.Log.Info("Logged in");
    }


    /// <summary>
    /// Uses AutoITX to cancel Windows Security Login Window that appears with CAC Logins
    /// </summary>
    private static void CancelSecurityDiaLogue()
    {
        //AutoItX.Send("{ESC}");

        DebuggingHelpers.Log.Info("If Exists: " + AutoItX.WinExists("Windows Security"));
        AutoItX.WinWait("Windows Security");
        if (AutoItX.WinExists("Select a certificate") == 1)
        {
            AutoItX.WinActivate("Windows Security");
            AutoItX.WinWaitActive("Windows Security");
            AutoItX.Send("{TAB}");
            AutoItX.Send("{TAB}");
            AutoItX.Send("{TAB}");
            AutoItX.Send("{ENTER}");
        }
        DebuggingHelpers.Log.Info("After If Exists in CancelSecurityDiaLogue");
    }

Основной метод для обратите внимание на один из них CancelSecurityDialogue (). Насколько я могу судить, окно IE Security должно называться не так, как окно Chrome. Тем не менее, когда я пытаюсь найти имя, бросить инструмент поиска AutoIT ничего не появляется. Он этого не видит. Это странно, потому что он видит окно IE. Если я ошибаюсь, это означает, что окно Chrome не такого типа, как окно IE, но оба имеют дело с сертификатами. Я действительно потерян здесь.

ОБНОВЛЕНИЕ:

Нашли что-то здесь: https://github.com/SeleniumHQ/selenium/issues/5408

Кто-то указывает, что Селен не закончил Navigate (). GoToUrl (...) действие еще не выполнено, что верно, потому что он застрял в подвешенном состоянии на уровне авторизации. Вот почему никакой код после действия, которое делает окно сертификата, не выполняется. Это подтверждается тем, что этот значок загрузки на вкладке браузера работает постоянно, пока вы не закроете вкладку. Это не решает мою проблему, но это возможная подсказка? Я просто не уверен, что делать с этой подсказкой. Например, в IE у вас тот же сценарий с той же вкладкой загрузки, но вы можете взаимодействовать с всплывающим окном Security Cert с AutoIT, почему это не работает в Chrome, и это меня смущает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...