Operating System Library

Начал изучать эту библиотеку, хотел выполнить

 run    c:/mspaint.exe

например или

start process    c:/mspaint.exe

 

По идее должна запуститься но программа. но каждый раз в логе:

TypeError: unsupported operand type(s) for +: 'NoneType' and 'list'

 

а какую версию робот фремворка вы используете?

потому, что вот такая конструкция у меня прекрасно работает.

 

*** Settings ***
Library           OperatingSystem
 
*** Test Case ***
test1
    Run    c:/Windows/System32/notepad.exe
 

можете также приложить или показать полный тест, который вы хотите выполнить?

Все сработало, просто я по неопытности в execution profile оставил custom script, а надо было именно python

Спасибо:)

В идеале я бы хотел, чтобы открывалась определенная программа и данные о времени ее открытия/закрытия/длительность сохранялись в sql БД/excel или просто в файл,

но не знаю пока как это сделать, думаю как-то с помощью Run And Return Rc And Output

проще будет сохранить в файл, что этого вам надо просто использовать метод Log, Get Time, Create File, Append To File

http://robotframework.googlecode.com/hg/doc/libraries/BuiltIn.html?r=2.7.1#Get Time

http://robotframework.googlecode.com/hg/doc/libraries/OperatingSystem.html?r=2.7.1#Append To File

ну если вы все таки хотите записывать в базу данных, то вы можете воспользоваться библиотекой DatabaseLibrary

http://franz-see.github.com/Robotframework-Database-Library/

http://franz-see.github.com/Robotframework-Database-Library/api/0.5/DatabaseLibrary.html

Спасибо!

Попробую так

Не получается запустить, хотел записать в sql таблицу определенные данные

run    C:/Testing/Install/sqlite/sqliteinsert.bat

start process C:/Testing/Install/sqlite/sqliteinsert.bat

В логе пишет pass, но фактически ничего не запускается и не добавляется

Можно ли так запускать bat-файлы?

Пробовал также прописать саму insert команду в тесте, тоже pass, но в итоге ничего не меняется

покажите текст всего вашего теста

я создал run.bat

c:/Windows/System32/notepad.exe

и создал test.txt

 

*** Settings ***
Library           OperatingSystem
 
*** Test Case ***
test1
    Run    run.bat
 
и у меня все прекрасно работает

Уже запускается, спасибо.

 А как можно запускать что-то из командной строки при помощи python?

run    C:/sqlite/sqlite3 test "insert into films (title, date, start_time) values ('%theuserinput%', '%date:~-4,4%-%date:~-7,2%-%date:~0,2%', '%TIME:~0,2%:%TIME:~3,2%:%TIME:~6,2%');"

в bat файле такое запускается, но если запустить из robotframework, то не срабатывает

не понял вопроса, можно немного детальнее, что вы хотите сделать с помощью pyhton?

и лучше перенести такой вопрос в секцию по python http://automated-testing.info/forum/programmirovanie/python

UPD: понял, надо было указывать полный путь к бд

теперь вот не пойму почему программы из папки program files не запускаются:

${mplayer}    set variable    C:/Program Files/Windows Media Player/mplayer2.exe

${fname}    Get Value From User    Enter filename

run     ${mplayer} ${fname}

а если скопировать mplayer2 в другую папку или в корень, и этот путь указать в ${mplayer}, то запускается

я думаю это из за пробелов в пути

да, похоже так и есть, создал папку C:/Program_Files/Windows_Media_Player/ оттуда запускается,  и что можно сделать в таком случае?

Как запустить приложение из папки с пробелами?

так:

C:/Program${SPACE}Files/Windows${SPACE}Media${SPACE}Player/mplayer2.exe

в логе путь отображается правильно, но все равно ничего не запускается.

И еще вопрос по формату времени: мне нужно получить только время, но когда использую:

${Time}=    Get Time    ${EMPTY}    Now

то получаю и дату и время

на счет пробела, похоже это баг, у меня тоже воспроизводиться. создал баг тут http://code.google.com/p/robotframework/issues/detail?id=1129&colspec=ID%20Type%20Status%20Priority%20Target%20Owner%20Summary%20Stars

на счет времени, 

 

@{time} = Get Time year month day hour min sec Now
вернет вам 
@{time} = ['2006', '03', '29', '15', '06', '21']

для запуска файла надо включить путь в кавычки

вот так вот должно работать

 

*** Settings ***
Library           OperatingSystem
 
*** Test Case ***
Test
    ${a}    Set Variable    "c:\\Program Files\\run.bat"
    Run And Return Rc    ${a}
    Log Variables

Спасибо, с кавычками и двойными слэшами сработало:)

Как выполнить 2 команды в командной строке: переход в папку, затем, оставаясь в этой папке, запустить программу?

${cmd}    set variable    "cd C:\\Program Files\\Borland\\StarTeam"    
${cmd1}    set variable    "stcmd.exe list -pwdfile  pwd.txt -p "some parameters" "*""    
${rc}    ${output}=    run and return rc and output    ${cmd}
${rc}    ${output}=    run and return rc and output    ${cmd1}

 

Так не выходит, похоже что после выполнения "cd", все возвращается в исходную папку (в корень видимо)

 

Может создать bat-файл, как указать что в файле должно быть несколько строк?

create file    c:/Program Files/Borland/StarTeam/co.bat    cd c:\Program Files\Borland\StarTeam
Append To File    c:/Program Files/Borland/StarTeam/co.bat    stcmd.exe parameters" "*"

Так в файл заносится текст без переноса строки.

Разобрался: нужно использовать "\n" для переноса строки в Append to file

да есть такая штука

каждая команда требует абсолютных путей

но для того, чтобы не связываться с созданием файла

можно использовать & в командной строке

т.е. это выполнение двух команд последовательно

например, cd Sun & dir