t.me/atinfo_chat Telegram группа по автоматизации тестирования

Как лучше реализовать секундомер для задания определённого времени выполнения определённых сценариев на странице?

Как лучше реализовать секундомер для задания определённого времени выполнения определённых сценариев на странице? И если, например в течении минуты не выполнились определённые сценарии, начать выполнение снова

Почему именно так, потому что запускаю выполнение тестов на не сильном компьютере, т.к. тестовых задач для страниц много, я запускаю ~10 экземпляров браузера и выполняются тесты. И бывает такое что элементарные действия (заполнить поле, кликнуть на элемент) - останавливают своё выполнение на неопределённый срок.
Например если кнопка “Сохранить”: действие кликнуть, визуально видно что кнопка “зажата” и остаётся в этом положении, но кнопка не отпускается и соответственно другой метод ожидает появления нужного элемента на странице, чтобы продолжить выполнение определённых сценариев.
Точно также с чек боксами, он как бы зажимается, но на действии “клик” выполнение замораживается, чекбокс какбы зажат, но не выбран ещё. А если кликнуть мышкой на кнопку то продолжает выполнение действий

Бывают “затупы” на регистрации и авторизации, есть имеилы и пароли реальных пользователей в файлах, они извлекаются из файлов нормально, но иногда бывает так что имейл в соответствующее поле ввёлся, дальше считывается из файла пароль, но не вставляет в нужное поле соответствующее значение


По сути мне нужно инициализировать счётчик в тесте, по истечению определённого времени работы на странице, должна быть активна определённая кнопка (значит что все поля заполнены корректными данными) и если она не активна то обновить страницу и возобновить выполнение соответствующих сценариев

Ну или посоветуйте как оптимизировать действия, если так, то выложу куски кода

10 браузеров на не слишком мощной машине? И это при том что современные браузеры прожорливые?
Не слишком мощная машина это какая? Вот у меня 10 инстансов на 8 гб памяти и core i3 работают ок.

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

    FirefoxProfile profile = new FirefoxProfile();
    profile.setEnableNativeEvents(false);
    DesiredCapabilities capability = DesiredCapabilities.firefox();
    capability.setBrowserName("firefox");
    capability.setCapability(FirefoxDriver.PROFILE, profile);
    driver = new FirefoxDriver(profile);
    driver.get("http://trafficapp.softproject.com.ua/login#/");
    driver.manage().window().maximize();
    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

Я по спартански запускаю сейчас тесты - просто по отдельности запускаю несколько тестов одновременно

И что вы в каждом тесте вот так вот инициализируете драйвер? Для каждого теста перезапускате браузер что ли?

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

Test NG? Я про него то и позабыл, завтра разберусь

Или может что ещё посоветуете?

в TestNG и JUnit у аннотации @Test есть параметр timeout. Если тест выполняется больше указанного в нем времени - он будет прерван. Можно попробовать его использовать.
Чтоб перезапускать - в TestNG можно ловить какие-то эксепшны в AfterTest и на основании их - рестартовать.
В JUnit - можно через Rule сделать перезапуск тестов.

1 Симпатия

Спасибо за совет
Но есть проблема, с помощью TestNG запускаю тесты, но при открытии нового браузера тест в потерявшем фокус браузере прекращается. Уверен что я что-то мелкое упустил, но не могу разобраться что :frowning:
В одном классе есть 4 метода, которые запускают мои тесты с разным набором данных в разных браузерах
Определил методы по группам типа “ff.test1” и “gc.test1”
В xml файле запускаю так:
Но пока открываются новые браузеры, тесты в предыдущих прекращают выполнение, остаётся рабочим последнее открывшееся окно браузера