Selenium | Простий тест займає 70 секунд

💡 Усі статті, обговорення, новини про тестування — в одному місці. Приєднуйтесь до QA спільноти!

Доброго дня.
Як я зазначив у назві в мене є тест такого плану:

Саме цей тест займає купу часу. Хоча в ньому навить нічого не перевіряється.

В мене усе останьої версії:
selenium == 4.10.0
firefox == 114.0.2
geckodriver == 0.33.0

Як ви бачіте у функції get_browser я робив спроби якось його пришвидшити, але ніяких змін, інколи в нього щось трапляється і він швидше робить. Останій рекорд був 40 секунд.

ЩО мені перевірити, чи що зробити щоб якось пришвидшити Селеніум? Бо ця хрінь ні в які ворота не йде, в мене інші тести можуть по 5 хвилин займати, а в них немає стільки коду щоб вони так довго проходили.

Вобщм я подивився логи, тест він проходить дуже швидко, але видалення связку займає дуже багато часу.

Ось рядок з логів:

DEBUG:selenium.webdriver.remote.remote_connection:DELETE http://localhost:39435/session/932b104f-9659-4605-a45d-7e659cb661dd {}

Саме на цьому рядку він зависає.

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Я запускаю тести під дебагом в PyCharm та натискаю паузу, коли Селеніум нічого не робить. PyCharm показує місце, де зараз мої скріпти висять.

Наприклад, нещодавно робили це, щоб зрозуміти чому на компі у співробітника запуск теста займає 60 секунд. Виявилося, що у його провайдера була помилка та мережеве зʼєднання с сервером, звідки завантажувався драйвер, закінчивалося таймаутом (60 секунд). Ми написали провайдеру, та він за добу виправив. А чому працювало після 60 секунд? Тому що WebDriverManager має кеш попередньо завантажених драйверів. І коли перевірка нової версії закінчується тайм-аутом, то він брав готовий драйвер з кешу.

Доречі, я роблю Селенім + Пайтон мітап. Запрошую: dou.ua/calendar/52051

Welcome to selenium

Рішення це стартувати селеніум один раз і потім на проводити на вже запущеному всі тести. Зроби TestSuite який буде проганяти всі тести через один селеніум і так і працюй

В мене багато тестів потребують перевірки що декілька користувачів заходять на сайт і щось там роблять. І тому запускати один раз не варіант. Але дякую, для деякиз тестів так і зроблю.

Якщо мова про performance testing, то це робиться трошки інакше

Чисто теоретично, у новому Selenium (з 4.6.0 ніби то) є вбудований SeleniumManager (розвиток WebDriverManager). Напевно, він би мав відключатися, коли драйвер вказано прямо, але припускаю, що корінь проблеми може бути тут: воно шукає і качає драйвер. Спробуй а) не передавати драйвер самостійно; б) пошукати в документації, як відключається SeleniumManager.
P. S. Це лише припущення.

Я передаю його самойстійно бо селеніум чомусь не бачить встановленний гекодрайвер в системі.
Вже дізнався що саме сповільнюе селеніум, видалення звязку. Обновив свій пост.

як вже писали, можливо проблеми з інітом браузера, тому я раджу юзати вебдрайвер менеджер, а не тримати бінарники в репо і періодично забувати їх оновляти.
також якщо є вейти, то можна спробувати зменшити.
але перш за все — логи

Добре спробую через манеджер заюзати.
В логах показано що він дуже довго видаля звязок. В пості указав саме який рядок.

А спробуй поставити логгери та подивитись, скільки часу займає ініт браузера та скільки триває завантаження сайту. Також спробуй порівняти з іншим браузером. Бо в мене було, що сайт завантажувався 50 секунд і Селеніум був не винен)

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

В логах ще щось є цікаве?

так ты логи должен был первым делом смотреть, а не на форум бежать тему создавать

Згоден. Так і зроблю. В мене просто ще не було таких проблем щоб треба було логер підключати. Завжди якось в інеті все знаходилось. Це перший раз коли мені пришлось писати пост і щось питати.

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

Ну мабуть воно у тебе сильно довго стартує. Щось може з драйвером. Так само працює на chrome теж?
Ще як варіант спробуй selenoid у докері.

З хромом, я пробував, але він чомусь не бачів браузер, тому не став мучатись із цим. Но мабуть прийдеться)
Просто хотілось розібратися із цим теж, хочаб зрозуміти куди копати.
До речі. Я до того як вимкнув показ браузера, вмене майже зразу він з’являлся, я бачів як проходить тест, і коли він закривався я нажав ctrl+c и завершував проце, результат тестів відображався номарльно і не було ні яких помилок від самого селеніума.
Мабуть селенім пост обробку завершуе довго

Для хрому тре було поставити chromedriver, чи щось таке, на скільки пам’ятаю

Також щоб бачити все, потрібно silent-mode офати

Не треба нiяких ctrl+c жмакати, ти щось робиш не те, кури документацiю.

Я цей приклад зробив з того що прочитав з документації, простіше бути не може.
Я підключив логи, і у логах видаленя звязку займае майже 60-70 секунд.
У пості обновив інфо

i шо в доках прямо написано про ctrl+c?

Ні, це вже випадково вишло, і так я дізнавщя со сам тест проходить дуже швидко. А ось сам селеніум робить довго.

посмотри в сторону playwright вместо селениума

Я його б теж подивився, але багато де просять знати селеніум, ось і вчу. Но хотілось б не зістарітись коли він усі тести пройде.

Підписатись на коментарі