Robot Framework + Jenkins

Добрый день хотелось бы узнать по подробней о настройке rebot для сбора отчетов во едино , ибо у меня от наглухо отказывается .
Ситуация вот какая , у меня Мультиджоб в дженкинсе из 3х задач , 2 из них делают тесты в браузерах и нечто похожее :
Шелл таск : rebot --name Browser_Compatibility $WORKSPACE/out/outputCRH.xml $WORKSPACE/out/outputFF.xml
Шелл таск : rebot --name final_report $WORKSPACE/out/final/*.xml
За этим идет робот паблишер(http://robotframework.googlecode.com/hg/doc/userguide/RobotFrameworkUserGuide.html#combining-outputs)
Проблема в том что Jenkins при сборке метит шелл номер два как FAIL и не собирает все до конца

  • rebot --name Browser_Compatibility /var/lib/jenkins/jobs/SandRobotTest/workspace/out/outputCRH.xml /var/lib/jenkins/jobs/SandRobotTest/workspace/out/outputFF.xml
    Log: /var/lib/jenkins/jobs/SandRobotTest/workspace/log.html
    Report: /var/lib/jenkins/jobs/SandRobotTest/workspace/report.html
    Build step ‘Execute shell’ marked build as failure
    Robot results publisher started…
    -Parsing output xml:
    Failed!
    hudson.AbortException: No files found in path /var/lib/jenkins/jobs/SandRobotTest/workspace/out/final with configured filemask: output.xml

У меня в каждой папке с тестом лежит такой батник для запуска:

set TEST_HOME=%~dp0
For /D %%a In ("%TEST_HOME:~0,-1%.txt") Do Set TEST_NAME=%%~na
chdir /d %TEST_HOME% && pybot --variable BROWSER:%1 --outputdir D:\Robot\test_results --log %TEST_NAME%-log_%1.html --report %TEST_NAME%-report_%1.html --output %TEST_NAME%_%1.xml %TEST_NAME%.txt & exit 0

и есть батник запускающий все мои тесты:

del /f /q D:\Robot\test_results\*
Reg Add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /V ProxyEnable /T REG_DWORD /D 0 /F

start /wait D:\Robot\NIP\asra-trr-01\run.bat %1
start /wait D:\Robot\NIP\asra-trr-02\run.bat %1
start /wait D:\Robot\NIP\asra-trr-03\run.bat %1

rebot --name "GMP NIP UI tests" -d D:\Robot\test_results\ -o output.xml D:\Robot\test_results\*.xml

В Jenkins в job всего одна комманда для запуска второго bat файла с параметром FF или IE :slight_smile:
Дальше я просто скармливаю output.xml Jenkins и все.

Собственно то что у вас в батнике на сборку , у меня выдает тот же результат

root@debselenium:/var/lib/jenkins/jobs/SandRobotTest/workspace/out# rebot --name Browser_comaptibility -d /var/lib/jenkins/jobs/SandRobotTest/workspace/out/ -o output.xml /var/lib/jenkins/jobs/SandRobotTest/workspace/out/*.xml

[ ERROR ] Reading XML source ‘/var/lib/jenkins/jobs/SandRobotTest/workspace/out/logCRH.xml’ failed: Incompatible XML element ‘html’.

Try --help for usage information.

Как запускаются тесты? Судя по логу получаются корявые xml, в частности logCRH.xml
Сами тесты проходят? Файлы с отчетами есть?

предыдущих 2 стадии мультижоба делают файло ,

root@debselenium:/var/lib/jenkins/jobs/SandRobotTest/workspace/out# ls -la
total 1016
drwxr-xr-x 2 jenkins nogroup   4096 Mar 14 18:22 .
drwxr-xr-x 7 jenkins nogroup   4096 Mar 13 19:13 ..
-rw-r--r-- 1 jenkins nogroup 220783 Mar 14 18:25 logCRH.xml
-rw-r--r-- 1 jenkins nogroup 220826 Mar 14 18:24 logFF.xml
-rw-r--r-- 1 jenkins nogroup  75118 Mar 14 18:25 outputCRH.xml
-rw-r--r-- 1 jenkins nogroup  75104 Mar 14 18:24 outputFF.xml
-rw-r--r-- 1 jenkins nogroup 215528 Mar 14 18:25 reportCRH.xml
-rw-r--r-- 1 jenkins nogroup 215506 Mar 14 18:24 reportFF.xml

Запуск осуществляю при помощи

pybot --variable "BROWSER:firefox" -o "/var/lib/jenkins/jobs/SandRobotTest/workspace/out/outputFF.xml" -l "/var/lib/jenkins/jobs/SandRobotTest/workspace/out/logFF.xml" -r "/var/lib/jenkins/jobs/SandRobotTest/workspace/out/reportFF.xml" $WORKSPACE/tests

и

pybot --variable "BROWSER:chrome" -o "/var/lib/jenkins/jobs/SandRobotTest/workspace/out/outputCRH.xml" -l "/var/lib/jenkins/jobs/SandRobotTest/workspace/out/logCRH.xml" -r "/var/lib/jenkins/jobs/SandRobotTest/workspace/out/reportCRH.xml" $WORKSPACE/tests

Соответственно

Ошибка в запуске тестов. Файлы лога и отчета должны быть с расширением html. естественно что jenkins не может распарсить их :slight_smile: в формате xml должны быть только output файлы.

Спасибо помогло :slight_smile:

Ребят, подскажите пожалуйста.

На убунте я поставил робот фреймворк в связке calabash-android.
Затем установил дженкинс. Но т.к. дженкинс создает в системе своего собственного пользователя, то начались проблемы. Часть из них я решил через CHMOD 777 к определенным папкам. Но часть сложно решаема, как пример ошибка на команду:

Execute calabash-android build Test.apk

${output} = jarsigner error: java.lang.RuntimeException: keystore load: /var/lib/jenkins/.android/debug.keystore (No such file or directory)

/var/lib/gems/1.9.1/gems/calabash-android-0.3.5/bin/calabash-android-bu...

Очень не хочется копаться в исходниках калабаша и исправлять там пути.

Есть ли варианты запускать дженкинс от имени моего пользователя в системе?

Если вы имеете ввиду jenkins-master

Спасибо, с пользователем получилось

Но вот дальше не могу продвинуться с запуском браузера из-под jenkins. У меня установлено все на убунту, соответственно есть графическая оболочка.
Если я в роботе прописываю запуск браузера Firefox, то получаю

WebDriverException: Message: 'The browser appears to have exited before we could connect. The output was: Error: no display specified\n'

Если прописываю браузер хром, то

WebDriverException: Message: u'unknown error: Chrome failed to start: exited abnormally\n  (Driver info: chromedriver=2.9.248304,platform=Linux 3.11.0-15-generic x86_64)'

При этом если запускаю напрямую (а не из дженкинса), то все работает в обоих случаях.

Нагуглил что нужно ставить Xvfb. Но почему? если графическая оболочка есть в системе…

Скорее всего потому что Jenkins запускает все фоном (на windows так же). А чем смущает xvfb?

Не хотелось создавать дублирующую тему, у меня пробелма свзяана тоже с Jenkins+RobotFramework.
Есть отдельная машина (windows) на которой поставлен Jenkins (Jenkins ver. 1.562), так же python 2.7, Robot framework, selenium2library.
Все тесты лежат в гите, но есть и локальная копия на тойже машине. (c/git). На Jenkinsе устанволены различные плагины для робота, гита и других. Я создаю простой Job, что бы запустить с этой же машины тест. Если ставлю Execute Windows batch command
Выдается ошибка:
‘pybot’ is not recognized as an internal or external command,
operable program or batch file.

сама команда такая
pybot ./git/Tests/001.txt

В чем у меня ошибка может быть? Почему Jenkins не видит pybot? Локально тест запускается используя команду Pybot test.txt.

Вы прописали в переменных окружениях пути до C:\Python27 и C:\Python27\scripts ?

Я прописывал пути только на самой машине в PATH. Еще где то надо это прописывать? Если вопрос про это то да, там все прописано. В cmd команды python тоже винды. Локально сами тесты можно запустить. А вот с Jenkins почему то такая ошибка. Попробовал build Execute Windows batch command:
cd “C:\git\Tests”
pybot 001.txt

Результат тотже

Вы можете выставить переменные окружения для slave или для билда. Также Вы можете прописать глобальные переменные окружения на машине, перелогиниться и запустить\перезапустить сервис Jenkins.

Спасибо! Перезагрузить сейчас невозможно, но я выцепил ночью время и сделал обновление Jenkins и ребутнул сервис. Теперь Jenkins в systemInfo видит пути до питона, видит пути до IEDriver.
Использую следующую команду

cd “C:\git\Tests”
pybot 001.txt

Получаю ошибку
Parent suite setup failed:
WebDriverException: Message: IEDriver executable needs to be available in the path. Please download from

Питоновские команды теперь выполняет, тест запускается но не может найти путь до эксплорера. В чем может быть загвоздка? Если поменять браузер на ff:

Parent suite setup failed:
Failed to find firefox binary. You can set it by specifying the path to ‘firefox_binary’:

from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

binary = FirefoxBinary(’/path/to/binary’)
driver = webdriver.Firefox(firefox_binary=binary)

Выполните в Jenkins job:
echo %PATH%
echo %PYTHONPATH%
И посмотрите есть ли там пути до необходимых утилит.
Вот эта ошибка

IEDriver executable needs to be available in the path.

говорит о том, что их там нет.

Выполнил, все пути что нужны есть.

;C:\Python27;C:\Python27\Scripts;Y:\IEDriver;C:\Chocolatey\bin

Ради теста добавил папку IEDriver в питоновскую, не помогло.

Удалось побороть? В качестве гадания: от кого запускается сервис jenkins (попробуйте от пользователя, под которым запускаете вручную) и как выставлены права на папку “Y:\IEDriver”

Здравствуйте! Вчера не было совсем на это время, сегодня опять занимаюсь немного локальным дженкинсом. Поборол проблему с путями,Все оказалось как и говорили проблема с путями и правами доступа к IEDriver, перенес на локальный диск и добавил в PATH еще раз. Поерезагрузил сервис и команду теперь видить нормально.

Теперь у меня две проблемы. Первая это то, что я не могу понять почему Robot framework plugin отказывается мне генерировать output логи. По окончанию теста, вот такое выдает:

Robot results publisher started...
-Parsing output xml:
Failed!
hudson.AbortException: No files found in path C:\Programs\Jenkins\workspace\test with configured filemask: output.xml
	at hudson.plugins.robot.RobotParser$RobotParserCallable.invoke(RobotParser.java:74)
	at hudson.plugins.robot.RobotParser$RobotParserCallable.invoke(RobotParser.java:51)

Если прописать в Job папку куда писать, то выходит получше, но я бы хотел что бы писались логи в тот же workspace где и сам job

Output:  C:\Programs\Jenkins\workspace\last_results\output.xml
Log:     C:\Programs\Jenkins\workspace\last_results\log.html
Report:  C:\Programs\Jenkins\workspace\last_results\report.html
Build step 'Execute Windows batch command' marked build as failure
Robot results publisher started...
-Parsing output xml:
Failed!
C:\Programs\Jenkins\workspace\test\last_results  does not exist.
	at org.apache.tools.ant.types.AbstractFileSet.getDirectoryScanner(AbstractFileSet.java:483)
	at org.apache.tools.ant.types.AbstractFileSet.getDirectoryScanner(AbstractFileSet.java:460)

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