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

IEDriver, Jenkins и стабильность тестов

Добрый день.

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

Использую следующую связку:

  • на локальной машине: Maven 3.1.0, IDEA 12.1.4, IEDriverServer
    2.35.3, Selenium 2.35.0, TestNG 6.8.7, IE9
  • на удаленной машине: Maven 3.1.0, Jenkins 1.531, IEDriverServer
    2.35.3, Selenium 2.35.0, TestNG 6.8.7, IE9

Capabilities стоят такие: [{platform=WINDOWS, javascriptEnabled=true, elementScrollBehavior=0, ignoreZoomSetting=false, enablePersistentHover=true, ie.ensureCleanSession=false, browserName=internet explorer, enableElementCacheCleanup=true, unexpectedAlertBehaviour=dismiss, version=9, ie.usePerProcessProxy=false, ignoreProtectedModeSettings=false, cssSelectorsEnabled=true, requireWindowFocus=false, initialBrowserUrl=http://localhost:16876/, handlesAlerts=true, ie.forceCreateProcessApi=false, nativeEvents=true, browserAttachTimeout=0, ie.browserCommandLineSwitches=, takesScreenshot=true}]

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

Если держать сервер включенным и настроить тесты на коннект к уже запущенному серверу, это может что-то изменить? Или изменение Capabilities?

Буду рад любым рекомендациям по оптимизации данного процесса.

Однозначно могу сказать, что requireWindowFocus при ремоут ране лучше сетать в true и не запускать драйвер как службу.

К сожаление при requireWindowFocus в true всё еще хуже. Если нет подключения через удаленный рабочий стол, то все тесты валяться по NoSuchElement, если же смотреть за всем этим безобразием то всё ок.

Что значит “нет подключения”? Машина залочена? Если это так - то решения нет, либо поднимайте на ремоут машине VM, либо пробуйте синтетические эвенты (маловероятно что поможет).

Машина залочена. Соединяюсь через свою доменную запись по удаленному столу средствами windows. Запускаю под этой учеткой Jenkins и завершаю удаленный сеанс. Если поступаю так, то при requireWindowFocus = true валятся ошибки по всем тестам, если же сеанс не завершать, то видно как стартует браузер и все тесты успешно выполняются друг за другом.

Вы предлагает на удаленной машине запустить VM c IE и там запустить Selenium Server, подключаясь к нему через RemoteDriver?

[quote=“Keiga, post:5, topic:3431”]
Вы предлагает на удаленной машине запустить VM c IE и там запустить Selenium Server, подключаясь к нему через RemoteDriver?
[/quote]Это будет самый надежный вариант. На залоченой машине нативные эвенты работать не будут - проверено еще со времен SilkTest.

Я в основном, гоняю тесты с nativeEvents=false на залоченой машине. С nativeEvents=true – действительно возникают проблемы. Еще, на залоченой машине, в IE скриншоты получаются «черным квадратом».
Для nativeEvents=true, я тоже использую отдельную виртуалку.
Для реальной машины в домене, можно использовать подключение по UltraVNC вместо Remote Desktop и специальную утилиту, которая не дает машине залочиться, например:
http://www.symantec.com/connect/downloads/readynosleepexe-prevents-screensaver-and-pc-locking