Полный диалог аутентификации Internet Explorer с Selenium - PullRequest
0 голосов
/ 05 июля 2018

Я использую Selenium для симуляции пользователя для автоматизации некоторых устаревших программ. Программное обеспечение работает только с IE6 (я использую IE11 в режиме совместимости) и немного дерьмо.

В программном обеспечении есть точка, где появляется диалоговое окно безопасности Windows. Это требует учетных данных, прежде чем пользователь / симулятор сможет продолжить.

Я использую IAlert.SetAuthenticationCredentials, чтобы попытаться заполнить диалог, но, похоже, это не работает. Чтобы уйти от этого, я могу ввести детали вручную, но тогда Selenium, похоже, закрывает главное окно браузера:

Текущее окно было закрыто.

Коллекция WindowHandles на данный момент пуста, но окно браузера все еще открыто и отображает правильную страницу.

Что здесь происходит?

Screenshot

UPDATE

Ответы на вопросы являются подсказками того, как обращаться с диалогом. Мне интересно, почему Selenium считает, что окно браузера закрыто, хотя на самом деле оно все еще там.

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Попробуйте переключиться на это оповещение,

var alert = driver.SwitchTo().Alert();
alert.SetAuthenticationCredentials("Username", "Pwd");
alert.Accept();

Я проверил, и он работает для IE11, selenium v3.1.0

Ссылка: https://seleniumhq.github.io/selenium/docs/api/dotnet/html/M_OpenQA_Selenium_IAlert_SetAuthenticationCredentials.htm

Предложение 1-Перейти к настройкам Internet Explorer-> Настройки безопасности-> Аутентификация пользователя-> Выбрать автоматический вход с текущим именем пользователя и паролем. enter image description here

Предложение 2 - если ваше приложение имеет доступ к своему API, войдите через API, получите токен аутентификации и установите auth.token в файле cookie браузера.

0 голосов
/ 05 июля 2018

Невозможно взаимодействовать с собственными окнами через selenium. Способ решения вашей проблемы, например, заключается в использовании аналога Robot в Java. Поскольку вы используете C#, здесь есть симулятор https://www.codeproject.com/Articles/28064/Global-Mouse-and-Keyboard-Library.

Пример кода будет выглядеть следующим образом:

// Simulate (Ctrl + C) shortcut, which is copy for most applications
KeyboardSimulator.SimulateStandardShortcut(StandardShortcut.Copy);

// This does the same as above
KeyboardSimulator.KeyDown(Keys.Control);
KeyboardSimulator.KeyPress(Keys.C);
KeyboardSimulator.KeyUp(Keys.Control);

Существуют также мышиные симуляторы, поэтому с помощью этого фреймворка можно будет ввести необходимые значения в окне и принять его.

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