Selenium C# - открытие новых вкладок становится медленным или время ожидания истекает, когда открыто много вкладокC#

Место общения программистов C#
Ответить
Anonymous
 Selenium C# - открытие новых вкладок становится медленным или время ожидания истекает, когда открыто много вкладок

Сообщение Anonymous »

Я автоматизирую веб-сайт с помощью Selenium на C#. Мой вариант использования предполагает открытие до 50 вкладок в одном экземпляре браузера, а также одновременное использование нескольких экземпляров браузера в отдельных потоках.
Я тестировал его в нескольких системах с разными требованиями.
Я тестировал его в нескольких системах с разными требованиями.
Я тестировал его в нескольких системах с разными требованиями.
p>
  • Core i5-5-го поколения, 8 ГБ ОЗУ — SSD
  • Core i7-7-го поколения, 16 ГБ ОЗУ — SSD
  • Ядро i7-6-го поколения, 32 ГБ ОЗУ — твердотельный накопитель
на более качественной машине работает несколько лучше, но все равно вызывает проблемы.
Чтобы открыть новую вкладку, я использую следующую команду:

Код: Выделить всё

var tab = Driver.SwitchTo().NewWindow(WindowType.Tab);
Поначалу это работает нормально, но по мере роста количества вкладок (около 50) производительность значительно снижается. А именно:
  • Команда Driver.SwitchTo().NewWindow(WindowType.Tab) начинает выполняться долго (до 30 секунд или подробнее) просто чтобы открыть новую вкладку.
  • В некоторых случаях через 60 секунд выдается исключение тайм-аута.
  • Когда это происходит, новая вкладка вкладка открывается, но остается в состоянии «загрузка» (как будто страница все еще загружается) и не фокусируется автоматически. Если я вручную нажму на новую вкладку в браузере, команда завершится успешно.
    Мой процесс требует, чтобы я открыл новую вкладку, обработал страницу, а затем повторил действия для последующих вкладок. Я не могу закрыть вкладку, прежде чем открыть другую, поэтому мне приходится держать открытыми несколько вкладок одновременно.
  • Эта проблема усугубляется, если несколько браузеров работают параллельно.
  • Если в начале моей программы я открываю все вкладки одновременно, она также работает намного лучше, она становится медленнее по мере увеличения вкладок, но тогда это занимает 3,4 секунды, но если я открываю их одну за другой и обрабатываю страницу (что включая заполнение формы и добавление вложения) это будет медленно, если я при запуске одного браузера иногда он все равно завершается полностью, но при использовании нескольких браузеров в большинстве случаев происходит сбой из-за тайм-аута.
  • Также другие команды будут работать медленно, например Driver.WindowHandles или Driver.SwitchTo().Window(window) или Driver.CurrentWindowHandle, даже эта Driver.Url
Что я пробовал:
  • Обходной путь с помощью расширения для браузера: я установил расширение для браузера, которое прослушивает сигналы и открывает вкладки по команде. Этот обходной путь работает нормально, но мне приходится открывать все вкладки одновременно, чего я хочу избежать, а также я бы предпочел по возможности избегать использования расширений.

    < li>Изучены ограничения на количество вкладок, но не найдено четкого указания, почему эта проблема возникает при большом количестве вкладок.
Вопросы
  • Почему открытие новой вкладки замедляется или происходит тайм-аут по мере увеличения количества открытых вкладок?
  • Есть ли способ оптимизировать обработку вкладок в Selenium, чтобы избежать этих проблем с производительностью?
  • Есть ли в Selenium альтернативные подходы или конфигурации для эффективной обработки большого количества вкладок?
Я также подумываю о переходе на Playwright, как и сделал слышал, что для автоматизации браузера не используется протокол WebDriver, а используется DevTools Protocol, но я не уверен, имеет ли это какое-либо значение или нет. на данный момент

Подробнее здесь: https://stackoverflow.com/questions/792 ... y-tabs-are
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»