Логические/математические операции - Robot Framework / ReGex / JS


#1

В заголовке темы указал robot, regex, js - так как не знаю как решить данную задачу. Есть время старта и окончания(сохранены в соответствующих переменных):
3:38 AM BST on Jun 16, 2016 ${stop}
2:45 AM BST on Jun 16, 2016 ${start}

Нужно вывести в лог время которое прошло между старт и стоп(53мин)


(rmerkushin) #2

Либо самописная библиотека, либо смотрите описание кейворда Evaluate + strptime https://docs.python.org/2/library/datetime.html#datetime.datetime.strptime


(Александр Шиповалов) #3

Я не работал плотно, а что стандартная библиотека Robot не может это сделать?


(rmerkushin) #4

Да, забыл что библиотеку по работе с датой сильно прокачали. Раньше приходилось юзать свою. Но в любом случае нужно будет привести дату к определённому формату.
Будет как то так:
| ${start} | Convert Date | 2:45 AM BST on Jun 16, 2016 | date_format=%I:%M %p BST on %b %d, %Y |
| ${stop} | Convert Date | 3:38 AM BST on Jun 16, 2016 | date_format=%I:%M %p BST on %b %d, %Y |
| ${time} | Subtract Date From Date | ${stop} | ${start} |

Но я не проверял :slight_smile:


#5

Спасибо огромное! Работает и возвращает результат в секундах, при выводе я конвертирую в минуты - то что нужно!


#6

Поднимаю тему вверх, задача немного усложнилась, каждые пол года формат будет меняться из
12:25 AM GMT on Nov 4, 2016
на
1:55 AM BST on Oct 28, 2016
То есть GMT будет меняться на BST, может есть идеи у более опытных товарищей, кроме как if then каким еще способом можно решить?


(rmerkushin) #7

Парсите первую дату и потом через кейворд Add Time To Date плюсуете 1 час (на сколько я понял разница между GMT и BST - 1 час) И оберните это в свой кейворд
http://robotframework.org/robotframework/latest/libraries/DateTime.html#Add%20Time%20To%20Date


#8

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

${scan_completed} Get Text css=#content tr:nth-child(1) td:nth-child(1)
${scan_started} Get Text css=#content tr:nth-child(2) td:nth-child(1)
${start} Convert Date ${scan_started} date_format=%I:%M %p BST on %b %d, %Y
${stop} Convert Date ${scan_completed} date_format=%I:%M %p BST on %b %d, %Y

И вот мне нужно как-то вписать “GMT или BST” то есть чтобы игнорировать какие буквы стоят в строке которую мы прочитали


#9

Решил вот так
${start} Convert Date ${scan_started.replace(“GMT”,“BST”)} date_format=%I:%M %p BST on %b %d, %Y
${stop} Convert Date ${scan_completed.replace(“GMT”,“BST”)} date_format=%I:%M %p BST on %b %d, %Y
Пока справляется с задачей