Я написал функцию в пользовательской библиотеке, которая активирует мое приложение на компьютере Mac на основе параметра, ниже приведен код ее
activate_product_window(self,myappname):
as = '''
tell application "{0}"
activate
delay 1
end tell
'''.format(myappname)
print (as)
p = Popen(['osascript', '-'], stdin=PIPE, stdout=PIPE, stderr=PIPE)
stdout, stderr = p.communicate(as)
Когда я выполняю ее с прямым вызовом для вызова экземпляра, он работает нормальноно когда я вызываю его через файл test.robot , он не работает.
я вызываю его в файле test.robot:
robot -d Results --variable product:"myappname" --variable test.robot
test.robotfile:
*** Settings ***
Documentation This is Test
Library Selenium2Library
Library ..\\..\\Libraries\\filename.py
*** Variables ***
${product} ${EMPTY}
*** Test Cases ***
First Test
[Documentation] This is First Test Case
Open Product ${product}
Activate Product Window ${product}
Может кто-нибудь сказать мне, можем ли мы заставить его работать через robotframework .
В названии моего продукта есть пробелы, например: ABC DD EE 11
,Я передаю его как "ABC DD EE 11"
в терминале, тогда код appleScript не работает, но если я жестко закодировал его как ABC${SPACE}DD${SPACE}EE${SPACE}11
в файле test.robot , то он работает.
Также у меня естьпопытался экранировать пробел через \
в командной строке, но не повезло.
Если я напечатал as
в функции, то он показывает правильное имя приложения в нем с кавычками. Ниже приводится то, что он печатаетвойти в систему, если я передаю его как "ABC DD EE 11"
или ABC\ DD\ EE\ 11
через аргумент командной строки или жестко закодирую как ABC${SPACE}DD${SPACE}EE${SPACE}11
в test.robot file
tell application "ABC DD EE 11"
activate
delay 1
end tell
Если я передаю командустроковый аргумент как ABC${SPACE}DD${SPACE}EE${SPACE}11
, затем он обрезает пространство и печатает имя приложения как ABCDDEE11
В каждом случае функция вызывается, когда я запускаю ее из терминала или напрямую из IDE, когда запускается из IDE с жестким кодом appname, она работаетно он не работает при запуске из терминала, но печатает яблочный скрипт в файле журнала, как он был выполнен.
Примечание: я удалил оригинальное имя функций и имя приложения из сообщения из-за политики компании.