【发布时间】:2018-10-28 10:55:35
【问题描述】:
我在自定义库中编写了一个函数,它根据参数在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.robot 文件:
*** 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 代码不起作用,但如果我在test.robot 文件中将它硬编码为ABC${SPACE}DD${SPACE}EE${SPACE}11,它就会起作用。
我也尝试在命令行中通过\ 转义空间,但没有成功。
如果我在函数中打印as,那么它会在其中显示应用程序的正确名称,并附有引号。如果我通过命令行将其作为"ABC DD EE 11" 或ABC\ DD\ EE\ 11 传递,以下是它打印的日志参数或在 test.robot 文件中将其硬编码为 ABC${SPACE}DD${SPACE}EE${SPACE}11
tell application "ABC DD EE 11"
activate
delay 1
end tell
如果我将命令行参数作为ABC${SPACE}DD${SPACE}EE${SPACE}11 传递,那么它会修剪空格并将appname 打印为ABCDDEE11
在每种情况下,当我从终端或直接从 IDE 运行它时,都会调用函数,当从带有 appname 硬编码的 IDE 运行时,它可以工作,但从终端运行时它不起作用,但它会在执行时在日志文件中打印 applescript .
注意:由于公司政策,我已从帖子中删除了函数的原始名称和应用名称。
【问题讨论】:
-
请至少在机器人框架中添加您如何称呼它的信息。那显然是一个python代码;您是否将它作为库导入,您如何调用它(例如,它在函数内部,并被称为关键字) - 没有这个问题将被否决/标记/关闭为低质量/太宽泛。
-
如果您不向我们展示机器人脚本,我们将无法帮助解决机器人脚本的问题。请创建一个minimal reproducible example。
-
@Todor 我已经用相关细节更新了这个问题。如果需要任何其他详细信息,请告诉我
-
@BryanOakley 我已经用相关细节更新了问题
-
更新后的问题好多了,谢谢。其中大部分是“变量值中的空白在使用时被修剪”,对吗?我会全力以赴的。
标签: python applescript robotframework